检查xml文件所在package名称是否和Mapper interface所在的包名一一对应;
检查xml的namespace是否和xml文件的package名称一一对应;
检查方法名称是否对应;
去除xml文件中的中文注释;
随意在xml文件中加一个空格或者空行然后保存。
我刚开始怀疑是环境问题,检查了jdk版本发现都一样的,还有会不会是打包的问题,我们是用jenkis部署的我从本地打包也同样有这样的问题。
使用IDEA工具 的需要注意这个问题:
由于新版的IntelliJ IDEA不再编译source folder下的xml文件,而我们平时使用mybatis时,习惯于将*Mapper.xml文件放在与dao层、service层平级的src目录下。这就导致ItelliJ IDEA不会变异这些xml文件夹,从而导致Invalid bound statement (not found)的发生。
解决方法如下:
1、将*Mapper.xml文件夹放在resource文件夹下,但是这种方式会打破原来的代码结构,如果团队中有人用eclipse有人用IntelliJ,这样就比较麻烦了;
2、在maven项目的pom.xml中build标签下插入:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>