Mybatis关联查询一对多使用插件分页返回数据不对

之前在做查询,开始没有考虑那么多,就没有做分页;后来随着数据量越来越大,不得不对以前的接口改成能分页的。我用的是mybatis自带的分页插件,可以在不改变原来的sql的基础上进行分页封装,这里面用的的是拦截器的功能。修改很顺利,可没有想到后面对比后台所查询出的记录,发现返回的结果会缺失。百思不得其解。
我通过打印结果,并对比直接从数据库中查询的结果,发现缺失的是一对多,多的一方会缺失。我才想起我这里在做关联查询,再将结果封装到对象中,对象中还关联了一个list类型。在看打印的sql,可以看到分页都是在原先的sql包一层分页的逻辑。此时才恍然大悟。

碰到这种情况,首先你得清楚你分页的重点是哪一方面。如果你是想把一方查出来,在顺便将多方给查到,这时你就不能使用自带的插件了,因为这个插件是在最外层分页,而已想要的只是对一方进行分页,这时你只能自己写分页的sql,在查一方表的时候用个数据库的分页关键字。
如果你就是要把这种关联结果查出来,那就更简单了,将结果封装成简单实体即可。
另外使用插件自带的分页统计,这个查询速度非常慢。有必要自己写sql统计,使用count(1)可以提高统计速度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值