[email protected]使用报错:Mapped Statements collection does not contain value for XXX
一、报错信息
### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for xxx.AmsAlgorithmDao.queryAlgorithmById
### The error may exist in xxx/JmsJobDao.java (best guess)
### The error may involve xxx.JmsJobDao.queryWaitToExecute
### The error occurred while handling results
### SQL: select * from xxx where xxx=xxx
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for xxx.AmsAlgorithmDao.queryAlgorithmById
二、常见原因分析
1.mybatis的映射文件的命令空间与接口的全限定名不一致;
2有可能mybatis的映射文件名字与接口的类名字不一致;
3.还有一种情况就是接口声明的方法在映射文件里面没有。
以上内容来自参考文章[1],致使这部分出错的常见原因是因为书写出错导致异常,正常情况下不需要百度,自行检查代码编写即可解决
三、本次错误分析
1.背景
1)使用mbg自动生成mapper.xml与使用@select相关的注解一起使用
2)单个@select使用没有问题
3)@Result按常规使用报错
4)使用@MapperScan扫描mapper.xml与接口组件dao
2.原因
因为使用mbg自动生成并且使用混合方式,在@MapperScan扫描时,先扫描Mapper.xml导致@Result使用时会先使用默认的BaseResultMap找不到@Result定位的方法导致出错
具体问题知识应见Mybatis的命名空间的使用以及定位知识
相似问题参考文章[2]
3.解决方法
在@MapperScan扫描时先扫描组件dao所在的包再扫描mapper.xml的相关目录即可
四、参考文章
[1] Mapped Statements collection does not contain value for 解决方法
https://blog.csdn.net/weimezilie/article/details/51940546
[2] Mybatis绑定多个mapper,@ResultMap 报错
https://www.jianshu.com/p/c5785aa3f516
[3] @Result等注解标签使用方式
上一篇: 编程判断输入整数的正负性和奇偶性。 **输入格式要求:“%d“ 提示信息:“Input m:“ **输出格式要求: 如果是负偶数,则输出“%d is a negative even\n“ 如果是负奇
推荐阅读
-
Mapped Statements collection does not contain value for XXX
-
Mapped Statements collection does not contain value for xxx
-
[email protected]使用报错:Mapped Statements collection does not contain value for XXX
-
Mybatis报错—— Mapped Statements collection does not contain value for com.mapper.DepartmentMapper
-
Mybatis报错:Mapped Statements collection does not contain value for