乐趣区

关于mybatis:mybatisjavalangIllegalArgumentException

在应用 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 就能够了 …

我不确定是不是下面哪个依赖包的版本过高, 导致它变智能了, 所以把包的版本也列出来供参考

退出移动版