在应用 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 就能够了 …
我不确定是不是下面哪个依赖包的版本过高, 导致它变智能了, 所以把包的版本也列出来供参考