嵌套查询 - 配置文件

在使用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

接下来, 上述错误涉及到的代码如下
image.png

上面报错的大意是: 找不到findById
可是就像我框起来的代码, 在select属性中, 我非常明确地指出了findById所在的路径.

其实问题也就是在这里select后面的路径..写得太完全了..
只要将前面的都删除, 只保留findById就可以了...
image.png

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

注解开发 - 一对一查询

在使用注解开发进行一对一查询时,出现以下错误

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

错误涉及的代码如下
image.png
image.png

错误的大概意思是又找不到我的findById方法
这里的原因是我在定义findById方法时,需要加一个@Results注解才可以
(具体原理不清楚)
image.png


chain_xx_wdm
64 声望2 粉丝

1.领养代替买卖