mybatis-plus异常:Invalid bound statement (not found)通用检查方法总结

项目场景:

mybatis-plus提供的方法一般是单表查询,如果涉及到两张表连接查询,他并没有提供通用模板,当然可以将两张表全查出来然后在代码中进行逻辑判断,但是这样会访问两次数据库,所以我个人觉着使用类似于mybatis中使用xml的方式进行写sql语句判断更好,因为这只涉及到单次访问数据库了嘛。


问题描述

mybatis绑定错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
在这里插入图片描述

原因分析:

这个提示就是告诉我们找不到xml中对应的sql语句

一. 语法错误

检查

  1. 接口中方法名(selectA)与xml文件中 id="selectA"是否一致,xml文件中的 namespace=“xxx.xxx.xxx.Mapper” 中的路径是否与接口文件路径一致

在这里插入图片描述
在这里插入图片描述
一般使用idea插件后,出现红框圈出的这两个标志点击能相互跳转说明id没问题

2.parameterType类型 与 resultType类型是否准确;resultMap与resultType是不一样的。

二.编译后target中找不到对应的xml文件

参考链接:

https://blog.csdn.net/w874307446/article/details/88527637
https://blog.csdn.net/u011781521/article/details/79052725

需要解决下面两个问题
1.xml文件放在了src/main/java目录下
在maven工程中,目录结构有:src/main/java和src/main/resources,前者是用来存放java源代码的,后者则是存放一些资源文件,比如配置文件等.
Mybatis中接口和对应的mapper文件不一定要放在同一个包下,如果放在一起的目的是为了Mybatis进行自动扫描,并且要注意此时Java接口的名称和mapper文件的名称要相同,否则会报异常,由于此时Mybatis会自动解析对应的接口和相应的配置文件,所以就不需要配置mapper文件的位置了。
(1):接口和文件放在同一个包中如下:
在默认的情况下maven打包的时候,对于src/main/java目录只打包源代码,而不会打包其他文件。所以此时如果把对应的mapper文件放到src/main/java目录下时,不会打包到最终的jar文件夹中,也不会输出到target文件夹中,由于在进行单元测试的时候执行的是/target目录下/test-classes下的代码,所以在测试的时候也不会成功。为了实现在maven默认环境下打包时,Mybatis的接口和mapper文件在同一包中,可以通过将接口文件放在src/main/java某个包中,而在src/main/resources目录中建立同样的包,这是一种约定优于配置的方式,这样在maven打包的时候就会将src/main/java和src/main/resources相同包下的文件合并到同一包中。

如果不想将接口和mapper文件分别放到src/main/java和src/main/resources中,而是全部放到src/main/java,那么在构建的时候需要指定maven打包需要包括xml文件,具体配置如下:在pom.xml中加入以下代码

<build>
    <resources>
         <resource>
             <directory>src/main/java</directory>
             <excludes>
                 <exclude>**/*.java</exclude>
             </excludes>
         </resource>
         <resource>
             <directory>src/main/resources</directory>
             <includes>
                 <include>**/*.*</include>
             </includes>
        </resource>
    </resources>
</build>

若存在xml文件,则打开xml文件,检查其中报错部分是否与源文件一致,不一致,则:先清除classes文件夹中文件,执行命令:mvn clean 清理内容,重新编译后即可。
2.添加xml扫描路径
如果以上方式都检查没问题,应该就是这个地方有问题了,这里我们打开mybatis-plus官网,会看到这里其实有常见问题解答
在这里插入图片描述
这里自定义SQL无法执行里面说了一个特别坑的点,和网课教学不一样的地方
在这里插入图片描述
(i). application.yml文件
在application.yml文件中加入这个路径,注意我红框圈的地方,这里线上课程可能会省略到这个 “*”,如下图是添加后的
在这里插入图片描述

(ii). .properties配置文件如果使用的是.properties配置文件,则改成如下样式,此图是其他博客上截取的
在这里插入图片描述

总结:

本质上就是mapper接口找不到对应的xml文件,博客上如果找不到解决方式去官网上找一下,写作不易,欢迎指正,如果有问题请评论区评论哦,如果解决麻烦点个赞哦。
下面将我整个代码框架图截取出来供大家比对

1.代码结构图
在这里插入图片描述
2.pom.xml
在这里插入图片描述
3.application-dev.yml
在这里插入图片描述4.mapper接口
在这里插入图片描述
5.xml文件
在这里插入图片描述

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值