微服务下的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

感谢

如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【点赞】支持,或请我喝杯咖啡【赞赏】,这将是我继续写作,分享的最大动力!
作者:勤快的小蚂蚁
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
————————————————
版权声明:本文为CSDN博主「勤快的小蚂蚁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fxzzq/article/details/126079715

猜你喜欢

转载自blog.csdn.net/fxzzq/article/details/126079715