错误: Mapped Statements collection does not contain value for XXX.

仍是在项目中, 跳出以上提示, 注意以上提示的细节"Mapped"一词, 它是被动语态的, 是"在已经匹配(Mapped)的语句(Statements)中"的意思, 说明JVM已经找到了一些Mapper的xml文件, 但"does not contain value for XXX", 也就是JVM找到的xml文件中没有你想要使用的'XXX'这款. 那么, 怎么解决这个问题?!html

网上的资料, 大体分类以下:spring

1.命名空间配置错误: <mapper namespace="com.sitech.mapper.StudentMapper">, 要写全到"StudentMapper"为止[ref];sql

2.若是使用Maven管理项目, 则多是Mapper的xml文件没有编译到target中(pom.xml的build配置项)[ref];mybatis

3.还有, 配置中没有引入Mapper的xml文件[ref];app

第3点的状况和个人状况相似, 个人是'引入出错'(我要引入的文件夹是'mapperXml', 却没有修改COPY过来的配置代码, 死活没有去检查这段代码), 错误代码以下(在'spring-mybatis.xml'中):框架

<!-- 引入myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
    <!-- 上一行末尾: 'mapper'要改为'mapperXml' -->
</bean>

<!-- 10月30日, 又新增一个错误致使相同的报错, 见下: -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.datareport.modules.NewUser.dao.NewUserDao">
    <!-- 错误缘由: 大小写没弄对(namespace中的'NewUser'应为小写开头, 由于包文件名是'newUser')  -->
    <select ...>
        ...
    </select>
</mapper>

错误可以修改掉, 但根本上, 若是不了解整个WEB项目框架的机制, 也只能是修修补补, 东边的砖搬到西边去, 造不了大厦, 因此, 多看官方资料和源码, 以及实践学习中的(即撸码上项目Just_For_Fun), 因此, 少年, 加油吧.学习

相关文章
相关标签/搜索