解决微服务下Mybatis xml无效绑定问题及分析Invalid bound statement
作者:勤快的小蚂蚁
这篇文章主要介绍了解决微服务下Mybatis xml无效绑定问题及分析Invalid bound statement,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
问题描述
启动运行项目,调接口时,走到mapper接口处,
报以下错误:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
有的人,可能困扰好几小时,或者一天以上。
分析
1、检查 mapper 接口和xml文件的定义的namespace 是否可以正常跳转。
2、检查xml返回类型是否正确 ResultMap 还是ResultType。
3、检查项目的主配置文件的信息(yaml或者poperties):
- 检查mybatis.mapper-locations属性配置的路径下是否可以找到接口对应的xml文件。
4、检查工程编译后Target的Classes的文件夹里,对应的xml文件,是否是最新的xml文件内容,二者是否一致。
- 其实,大多数并没有被编译到Classes 目录中。
- maven 要执行 mvn clean package 【不一定得行、静态文件不一定会加载到target】
- maven 要执行 mvn clean install 【得行】 【idea清空缓存、再执行此命令】
5、检查主启动类的注解的value是否正确。
@MapperScan(value = "com.zy.core.mapper")
6、如果使用了微服务的配置中心,还需要检查当前的项目是使用的哪个Nacos。
项目的环境(本地调试,开发环境、测试环境、生产环境)不一样,使用的Nacos配置也不一样。
- 有自己电脑启动的nacos;
- 有公司搭建的nacos;
- 有不走nacos的配置中心的,走项目的本地配置;
总之, 要明确当前的项目的配置(如:数据库连接的信息)应该是使用的那个位置(本地的yaml还是本地的Nacos配置中心、其他的Nacos配置中心)。
如果使用了Nacos配置中心,不管是本地的还是其他的,都要登录Nacos配置中心去检查下是否存在相应的DataId、group、username、password等信息。
如果存在 ,查看下mybatis.mapper-locations属性是否与项目里配置的一致。
mybatis: mapper-locations: classpath:com/zy/core/mapper/*Mapper.xml
或者
mybatis-plus: mapper-locations: classpath*:com/zy/core/mapper/mapper/**/**.xml
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- 解决java中mybatis报错:org.apache.ibatis.binding.BindingException:Invalid bound statement(not found):xx问题
- mybatis整合springboot报BindingException:Invalid bound statement (not found)异常解决
- 使用mybatis报Invalid bound statement解决分析
- mybatis创建项目报Invalid bound statement (not found)错误解决方法
- SpringBoot使用MyBatis-Plus解决Invalid bound statement异常
- 解决mybatis-plus通用mapper调用报错:Invalid bound statement
- mybatis Invalid bound statement(not found)排坑记录