Mybatis关联结果查询分页方法

#在Mybatis分页插件的说明中有如下内容 ##不支持的情况

对于关联结果查询,使用分页得不到正常的结果,因为只有把数据全部查询出来,才能得到最终的结果,对这个结果进行分页才有效。因而如果是这种情况,必然要先全部查询,在对结果处理,这样就体现不出分页的作用了。

对于关联嵌套查询,使用分页的时候,只会对主SQL进行分页查询,嵌套的查询不会被分页。

##对于不支持情况

  • 在Mybatis中没有任何简单的分页能实现该功能
  • 即使Mybatis的内存分页也不能实现关联结果查询的分页

##如果你不了解关联结果查询和关联嵌套查询
可以查看该专题进行了解。

##如何对关联结果进行分页?

  • 针对这种情况最好的方法就是手写分页,针对主要语句进行分页,对连接的表不进行分页查询
  • 针对主要语句写count查询(不需要管连接的表)
  • 这样一来,对嵌套的结果就没有影响了

##简单举例如下

<!-- lang: sql -->
select *
  from (select *
          from (select a.*, rownum rw from sys_role a where rownum <= 4)
         where rw > 0) a
  left join sys_role_function b on a.roleid = b.roleid;

这条语句分页限制为0到4,主分页语句限制为4条结果,实际结果是左连接后的结果,不止4条。
使用这种针对性的分页sql就能解决关联结果查询的问题。

##关于关联嵌套查询
嵌套查询由于都是独立的sql,主sql和分支sql都是分离的,所以使用Mybatis分页插件可以正常分页。如果你还想对关联查询的分支sql进行分页查询,基本上是不可能的,但是通过column={}这种方式传递分页参数也能实现,估计有些人看不懂这里了,就到此为止吧,不需要做这么费力不讨好的事。

##Mybatis分页插件地址:http://git.oschina.net/free/Mybatis_PageHelper

转载于:https://my.oschina.net/flags/blog/274000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值