Mybatis遇到的错误整理

Mybatis遇到的错误整理

1.Mybatis 用 in时不能像sql一样,直接在xml中用foreach来写,生成出来的sql就是in(,,,)

我的使用场景是需要将一个List对象中的所有数据都找到。

mapper.java
在这里插入图片描述

mapper.xml在这里插入图片描述

2.Mybatis中“$”和“#”的理解
#:一般放的是表字段或者类型明确的数据
$:放的是自定义的字符串

3.出现 function XXX $ does not exist 这个错误。
解决;出现在这个问题是因为我把 $ {…} 写成了$ (),将他改为$ {…} 就正常了。

4.经常遇到mapper.java类找不到的情况
解决:

  1. 确认mapper.xml中对应的mapper.java名字是否正确
  2. 配置文件或者pom.xml事都有注入mapper.xml的位置
  3. Spring Boot 启动类是否注入mapper.java的根包路径
  4. 以上都完成还是显示找不到,则进行 maven->clean ->install,maven重新导包

因为我是项目属于多个model项目。几个项目之间都是互相引入的jar,可能需要重新导包

5.nested exception is org.apache.ibtis.exceptions.TooManyResultException 的问题
解决:数据库查询的内容是多条,而接收数据的地方是个单个对象,将接收数据的位置换为List<…>就可以了

6.java.lang.unsupportedoperationException 的问题
解决:
是因为我的ResultMapde type设置的是个java.util.List,而我返回的数据是拿List<Map<String,Object>>去接的,也就是说返回的类型应该是Map才对,
打个比方,比如:我现在有个学生表,我需要查询学生表有多少条数据,我的ResultMap 中的type应该是“学生表”这个对象,我在接收查出来的数据是拿List<学生表> 去接收的。
所以,直接将ResultMap的 type改为java.util.Map就正确了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值