还是在项目中, 跳出以上提示, 注意以上提示的细节”Mapped
“一词, 它是被动语态的, 是”在已经匹配(Mapped)
的语句(Statements)中”的意思, 说明JVM已经找到了一些Mapper的xml文件, 但”does not contain value for XXX”, 也就是JVM找到的xml文件中没有你想要使用的’XXX’这款. 那么, 怎么解决这个问题?!
网上的资料, 大致分类如下:
1.命名空间配置错误: <mapper namespace="com.sitech.mapper.StudentMapper">
, 要写全到"StudentMapper"
为止[ref];
2.如果使用Maven管理项目, 则可能是Mapper的xml文件没有编译到target
中(pom.xml的build配置项)[ref];
3.还有, 配置中没有引入Mapper的xml文件[ref];
第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), 所以, 少年, 加油吧.