在项目中遇到 org.apache.ibatis.binding.bindingException:Invalid bound statement (not found) 解决方案

一般来说,Mapper interface和对应的xml文件的定义对应不上会引起该错误

出现这个错误,按以下步骤检查一般就会解决问题:

  • 检查xml文件所在package名称是否和Mapper interface所在的包名一一对应
  • 检查xml的namespace是否和xml文件的package名称一一对应
  • 检查方法名称是否对应
  • 去除xml文件中的中文注释
  • 随意在xml文件中加一个空格或者空行然后保存

解说

  • 随意在xml文件中加一个空格或者空行然后报存,是触发了IDE的自动编译功能。由于xml文件在编译的时候,不一定总能立即从源目录复制到class文件的编译目录(eclipse经常会出现这个问题),有时候你源目录中的xml已经修改好了,而class所在的目录里还是旧的。因此真正确定有效的方式是将正确的xml文件复制到class输出目录
  • Jenkins通过maven把项目达成war包,或者Eclipse通过使用maven命令tomact7:deploy远程自动部署项目打成对应的xml文件,也就是没有把xml文件打包进去,解决办法是,在pom.xml文件中的build标签中添加如下代码,显示的强制将xml文件打到war包中:
<resources>
<resource>
<directoty>src/main/java</directoty>
<includes>
<include>
**/*.xml
</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>