Mybatis中的嵌套查询collection
一般使用collection标签进行嵌套查询时,有两种方法
比如有个user类,其中有个属性是List< Role>的集合
第一种方法是直接联合user表和role表多表查询,通过user的id会查询出多条数据,然后再用result封装将role信息封装到List< Role>中
第二种方法就是先只查单独的user信息,然后在collection的属性中使用select属性引用其他mapper的方法,这个方法的返回值也要是List< Role>类型的
今天碰到个bug,就是使用了select进行引用其他mapper的方法,报错(selectOne期望是1,实际是多条数据),感觉很奇怪,确定引用的方法返回的类型是List< Role>,没有问题。最后排查了半天才发现是查询用户的sql写的有问题
总结: 使用第二种方法时,只能先查询单独用户信息,也就是说结果只能是一条用户数据,而我犯的错误就是在使用第二种方法进行查询时,联合了user表和role表进行了多表查询,查出了多条数据,然后又在collection使用了select属性引用查询List< Role>,结果就悲剧了报错了,真的是坑爹啊,找了半天的错误
不知道有没有人碰到和我一样的情况