场景
若依前后端分离版手把手教你本地搭建环境并运行项目:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662
做业务开发时新建某个表并调用代码生成的mapper方法查询list时,
之前突然好用的方法,突然提示:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ruoyi.system.mapper.BusDeviceMapper.selectBusDeviceList
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:229)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:53)
at org.apache.ibatis.binding.MapperProxy.lambdacachedInvoker0(MapperProxy.java:96)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.apache.ibatis.util.MapUtil.computeIfAbsent(MapUtil.java:36)
at org.apache.ibatis.binding.MapperProxy.cachedInvoker(MapperProxy.java:94)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
根据典型的报错xml不匹配问题,问了AI,排查了常规如下原因:
- 检查 Mapper XML 文件位置
Maven 项目:确保 XML 文件在正确位置
方式一:放在 src/main/resources/mapper/ 目录下
方式二:与 Mapper 接口同包(如 src/main/java/com/ruoyi/system/mapper/)
- 检查 application.yml 配置
mybatis:
mapper.xml 文件位置
mapper-locations: classpath*:mapper/**/*.xml
或者
mapper-locations: classpath*:com/ruoyi/**/mapper/*.xml
实体类包路径
type-aliases-package: com.ruoyi.system.domain
- 检查 Mapper 接口和 XML 的命名空间
4、常见排查步骤
清理并重新编译:
mvn clean compile
检查 target 目录:查看编译后的 classes 目录下是否有 XML 文件
IDE 刷新:在 IDEA 中执行 File -> Invalidate Caches and Restart
检查方法名:确认 XML 中的 id="selectBusDeviceList" 与接口方法名完全一致(包括大小写)
常规排查后仍然不生效,开始往下面的思路怀疑
问题出现在往实体类中添加了几个数据库不存在的字段后。
那就:
标记非数据库字段
在新增的字段上添加 @TableField(exist = false)
仍然不生效。
再经过各种什么mybatis与mybatisplus共存问题、@Mapper接口问题各种排查后,
还是不行,最后就算把新增的字段去掉恢复了代码还是不行。
那就可能根代码没啥关系了,因为之前的代码是能正常启动访问的。
最终去查找maven的问题。
果然IDEA中的Maven设置被改成了默认的C盘的配置文件了。
然后将maven路径改为我的外置的路径,配置文件一顿修改正确好,可以了,问题解决了!!!