Spring Boot + Mybatis-Plus Mybatis绑定错误-- Invalid bound statement (not found) 成功解决

mybatis绑定错误-- Invalid bound statement (nMot found)

这两天在弄一个项目 项目中使用了 Spring Boot + Mybatis-Plus 等一些框架,用Mybatis-Plus 代替Mybatis代码比起之前的Mybatis减少了很多,xml 文件都没有了,但由于项目中有些业务的需求需要一些复杂的点的SQL。然后又添加了几个xml文件,自定义了SQL。 (用Mybatis-Plus 有好处也有头疼的地方,这里就不多说了)
在这里插入图片描述
就这几个xml,搞死我了。发布到服务器上的时候当有地方调用这几个SQL的时候,就会出现下面出错
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)## 标题:

问题排查

检查了各地方配置文件,网上也查了以下方法都试过:
  • 检查xml文件所在package名称是否和Mapper interface所在的包名一一对应;
  • 检查xml的namespace是否和xml文件的package名称一一对应;
  • 检查方法名称是否对应;
  • 去除xml文件中的中文注释;
  • 随意在xml文件中加一个空格或者空行然后保存。

我刚开始怀疑是环境问题,检查了jdk版本发现都一样的,还有会不会是打包的问题,我们是用jenkis部署的我从本地打包也同样有这样的问题。

使用IDEA工具 的需要注意这个问题:

由于新版的IntelliJ IDEA不再编译source folder下的xml文件,而我们平时使用mybatis时,习惯于将*Mapper.xml文件放在与dao层、service层平级的src目录下。这就导致ItelliJ IDEA不会变异这些xml文件夹,从而导致Invalid bound statement (not found)的发生。

解决方法如下:

1、将*Mapper.xml文件夹放在resource文件夹下,但是这种方式会打破原来的代码结构,如果团队中有人用eclipse有人用IntelliJ,这样就比较麻烦了;

2、在maven项目的pom.xml中build标签下插入:

    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>

手工将src下所有xml文件引入编译;

按以上步骤检查都没有解决问题,让我很奔溃,最郁闷的是在本地启动时是没有问题的,没有出现任何问题,一发布到服务器测试环境就出现这种情况。

在这里插入图片描述
最后无奈去官网看了看 Mybatis-Plus 自定义 SQL 无法执行 的常见问题
在这里插入图片描述
将里面 出现 Invalid bound statement (not found) 异常 的原因都对了一遍 ,发现了一个地方没有对上
官网实例如下:
在这里插入图片描述
而我的配置文件是这样的 (项目中使用的是.properties不是yml,格式不大一样,但意思一样的):
在这里插入图片描述
我红色框框里面 classpath*:mybatis/Mapper.xml 这个跟官网的少了个 * ,
我把它改成classpath
:mybatis/*Mapper.xml ,赶紧发布到测试环境,因为这个问题我已经忙活很久了

居然成功解决了我的天!!!

最后配置文件如下:
在这里插入图片描述
我当时在想我怎么一开始就不来官网看看呢,就很纳闷。
最终让我很郁闷的是 为什么本地之前那么写就没有问题呢??
还有一点就是这个项目的配置文件是从其他地方copy 过来的,当时就改了改一些参数值
本地运行一切都正常,所以没在意这里。

希望我躺的坑能够帮助大家

在这里插入图片描述

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值