错误场景:
相信大家在mybatis编写sql语句时可能经常遇到这个错误,这儿记录下来仅供参考。
程序报错:“ org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.xxx ”
原因分析:
异常提示在MyBatis-Plus持久化框架使用中,Mapper.java与Mapper.xml绑定失败,绑定关系错误,所以我们自然而然的想到了是不是mybatis 方法映射名、返回类型或命名空间是否有误,如果对比都正确就 就要考虑自己的映射路径是否正确。
解决方案:
首先:要确认自己的项目构建没有问题,可以将maven clean 然后重新刷新。如果仍然有误就进行下一步。
第二步:查看自己命名空间指向的地址是否正确。如下图:(可以CTRL+鼠标左键点击看是否能跳转)
第三步:查看mapper.xml中的方法名映射和返回对象与mapper.java是否一致。如下图:
同样这里可以CTRL+鼠标左键点击看是否能跳转
第四步:查看自己mapper.xml存放位置(我就是这里中招)
如果你的mapper和我一样存放下图,就需要在pom文件中进行配置,这是因为maven默认在java包下只识别java文件导致。
pom.xml代码如下:
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
因为我这里mapper.xml时放在/mapper/xml下,而mapper.java是放在/mapper下,它们不属同一级目录,所以还需要再application.yml中配置,如果你mapper.xml和mapper.java在同一目录下就不用进行操作。代码如下:
# 路径改成你自己的mapper.xml的路径 mybatis-plus: mapper-locations: classpath:com/xin/eduservice/mapper/xml/*.xml
到此就运行成功啦,关于 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.xxx 的解决办法 就写到这儿了,如果还有什么疑问或遇到什么问题欢评论区留言