【常规解决办法】
如果出现:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,我经常就是写错了一两个字母搞的很长时间找不到错误
按以下步骤一一执行:
1、检查xml文件所在的package名称是否和interface对应的package名称一一对应;
2、检查xml文件的namespace是否和xml文件的package名称一一对应(即引用xml文件所需的package名称);
3、检查函数名称能否对应上;
【我遇到的问题】
本地无问题,发布到服务器就无法登录。
错误日志:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
【出错原因】
使用maven命令tomcat7:deploy远程自动部署项目打成的war包,里面缺少Mapper对应的xml文件,也就是没有把xml文件打包进去。
【解决方案】
在pom.xml文件中的build标签中添加如下代码,显示地强制将xml文件打到war包中
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <!-- 此配置不可缺,否则mybatis的Mapper.xml将会丢失 --> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> </project>
参考: