Mybatis关联结果查询分页方法

#在Mybatis分页插件的说明中有以下内容 ##不支持的状况html

对于关联结果查询,使用分页得不到正常的结果,由于只有把数据所有查询出来,才能获得最终的结果,对这个结果进行分页才有效。于是若是是这种状况,必然要先所有查询,在对结果处理,这样就体现不出分页的做用了。git

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

##对于不支持状况mybatis

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

##若是你不了解关联结果查询和关联嵌套查询
能够查看该专题进行了解。.net

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

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

##简单举例以下code

<!-- 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就能解决关联结果查询的问题。htm

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

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

相关文章
相关标签/搜索