嵌套查询 - 配置文件
在使用mybatis一对一的嵌套查询时, 报错如下:
org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bigdata.mapper.UserMapper.findById
The error may exist in com/bigdata/mapper/OrderMapper.xml
The error may involve com.bigdata.mapper.OrderMapper.findAllOrders2
The error occurred while handling results
SQL: select * from orders
Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bigdata.mapper.UserMapper.findById
网上找来找去, 解决方法基本都是查namespace之类的, 检查名称是否一致. 这些错误我都没犯, 不适用于我这个问题, 最终解决方法如下说明.
首先, 依赖的包的版本分别是
- mysql : 8.0.11
- mybatis : 3.5.5
- junit : 4.13
接下来, 上述错误涉及到的代码如下
上面报错的大意是: 找不到findById
可是就像我框起来的代码, 在select属性中, 我非常明确地指出了findById
所在的路径.
其实问题也就是在这里select后面的路径..写得太完全了..
只要将前面的都删除, 只保留findById就可以了...
我不确定是不是上面哪个依赖包的版本过高, 导致它变智能了, 所以把包的版本也列出来供参考
注解开发 - 一对一查询
在使用注解开发进行一对一查询时,出现以下错误
org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bigdata.mapper.OrderMapper.findById
The error may exist in com/bigdata/mapper/OrderMapper.java (best guess)
The error may involve com.bigdata.mapper.OrderMapper.findAllOrders
The error occurred while handling results
SQL: select * from orders
Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bigdata.mapper.OrderMapper.findById
错误涉及的代码如下
错误的大概意思是又找不到我的findById
方法
这里的原因是我在定义findById方法时,需要加一个@Results
注解才可以
(具体原理不清楚)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。