场景
今天从 git 上拉了一个项目在本地跑,报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement
(not found)
对于这个问题的原因,即 mybatis 中 dao 接口与 mapper 配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。
本篇文章汇总一下这个bug可能出现的情况,记录的同时希望对各位有帮助。
解决
截图为网络中搜索到的常见原因:
照着修改之后,问题依旧存在。最终花费了好大的力气才找到自己代码问题的根源。dao接口与xml的文件名不一致。
接口名与接口文件名都是DepartmentDao, 而配置文件名为DeparmentDao.xml,费了很大的劲才看到两者名字查一个t字母。修改后就一切正常了。
这是一个很容易忽视的点,记住:接口名与Mybatis的映射文件名一定要一模一样。
=============================================================
以上为参考
下面是我遇到的问题,大家可以对比下
错误的依赖导致配置文件里 type-aliases-package、mapper-locations,没有生效,有高亮
<!-- MyBatis增强插件 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
换用下面的依赖以后就可以了
<!-- MyBatis增强插件 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>