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类找不到的情况
解决:
- 确认mapper.xml中对应的mapper.java名字是否正确
- 配置文件或者pom.xml事都有注入mapper.xml的位置
- Spring Boot 启动类是否注入mapper.java的根包路径
- 以上都完成还是显示找不到,则进行 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就正确了。