在MyBatis框架的代码测试中报了一项这个错误:
org.apache.ibatis.binding.BindingException: Invalid bound statement(not found): XXX
首先应该考虑的是Mapper接口与Mapper.xml之间的约束规定:
需仔细检查以下规定:
1.Mapper接口与Mapper.xml通常放在同一个包下, 除了后缀名,两者文件名需要一致
2.xml文件中<mapper namespace="是否正确引用了Mapper接口"></mapper>
3.xml文件中的Sql标签:id是否和接口方法名一致?入参类型和出参类型是否和接口方法一致?
经过上面的仔细检查,问题也许并没有得到解决,
这时查看项目的target输出文件,发现在mapper包下(放接口和xml的包)的xml文件并没有被编译过来.
导致这样的原因是该项目为Maven项目,如果xml文件没有放置在resources这样的资源配置目录,Maven是不会将xml编译输出的.
所以在pom.xml的<build></build>标签中需要加上这样一段配置:
<resources> <resource> <directory>src/main/java(此处为Java包目录,实际上为解决mapper包下放置的xml文件)</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> 再次运行代码测试,错误解决.