关于mybatis返回数据给前台的一个问题

由于用公司电脑开发的原因。没有截图

.提要:某个页面涉及到了一个列表的分页查询,其中涉及到了三个表 executor,item,以及relation关系表,相当于一个executor可以检查多个item,也就是一对多的关系。

一开始,一对多想到的就是resultMap形成一个映射关系,于是马上动手开始写

关于mybatis返回数据给前台的一个问题_第1张图片

好,写完,等不及马上测试

关于mybatis返回数据给前台的一个问题_第2张图片

虽然没有404,不过也有个问题,使用swagger测试的时候不管wo数据库里面类型是啥 返回的都是个数组形式的["1","1",...]

于是赶紧百度,发现了问题,如果使用的是String类型,collection不能这么写,于是更正

关于mybatis返回数据给前台的一个问题_第3张图片

很开心,用swagger一测试,果然正常返回库中的内容了,于是跟大佬暗示这些搞定了,GKD

---------------------------------------------------------------------------------------------------------------------------------

于是第二天,与前台联调,在进行分页查询的时候,发现即使我库中有15条数据,limit 0,10返回的也是7条数据,

这里项目中一直使用的是pageHelper进行一个分页操作,查看前台返回的数据时候 发现total显示的是15,但是封装的list只有7条

果然,经定位发现 executor果然只有7条数据,而relation则有15个与之相关的数据,问题找到了,于是赶紧百度一下。

https://blog.csdn.net/xiaoxiangzi520/article/details/76058431 这里感谢这位@FinelyYang 这位大佬分析的思路,主要就是

mybatis在使用分页limit关键字时,java映射得到的数据是由主表也就是executor得到,而sql数量则是由relation得到,这就导致了两遍数据不一样,也就导致了分页不能正常显示。大佬的解决方法也给了我一点提示,于是

关于mybatis返回数据给前台的一个问题_第4张图片

这里比起之前 就是在collection中多分出了一个select选项,就是再映射了一个子查询,而column=“id”这项是作为executor中的id作为与relation左关联的参数传入selectRelationXXX中形成关联,而原来的主表查询就不需要再填写关联了,直接将对应的信息查询即可

很开心,联调完成。希望没啥问题了  记录一下

你可能感兴趣的:(关于mybatis返回数据给前台的一个问题)