文档章节

Mybatis关联结果查询分页方法

Liuzh_533
 Liuzh_533
发布于 2014/06/05 22:17
字数 680
阅读 9537
收藏 37

#在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

© 著作权归作者所有

共有 人打赏支持
Liuzh_533

Liuzh_533

粉丝 710
博文 21
码字总数 40530
作品 5
石家庄
程序员
加载中

评论(10)

Liuzh_533
Liuzh_533

引用来自“水元之素”的评论

【column={}这种方式传递分页参数】这个方法分页 请说明下吧 谢谢
http://blog.csdn.net/isea533/article/details/21007559
Liuzh_533
Liuzh_533

引用来自“水元之素”的评论

【column={}这种方式传递分页参数】这个方法分页 请说明下吧 谢谢
http://blog.csdn.net/isea533/article/details/21007559
A
Atom7
【column={}这种方式传递分页参数】这个方法分页 请说明下吧 谢谢
l
lantian123
我需要【column={}这种方式传递分页参数】这个方法分页。烦请写个例子吧。
learn_more
learn_more
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;

对于这条sql语句分页是足够了,但是如果有查询条件的话,似乎有点勉强。比如我要查询的是sys_role_function 表中某个name字段满足条件的 sys_role 记录,是不是要这样写:
select *
from (select *
from (select a.*, rownum rw from sys_role a
     left join sys_role_function b2 on a.roleid = b2.roleid
     where rownum <= 4 and b2.name like '123%')
where rw > 0) a
left join sys_role_function b on a.roleid = b.roleid;

这里只有一张关联表所以很简单,如果多个关联表,那么相当于对每张表都进行了两次关联,这样分页真的好吗?
lgl48128244
lgl48128244

引用来自“撒哈拉的小猫”的评论

Mybatis是编程语言还是系统来的?--来自blog.clmao.com土豪版灌水机

引用来自“Liuzh_533”的评论

是一个持久化框架。。操作数据库的。。和hibernate是一类。
像此类问题就不必回复
KaneTing
KaneTing
这篇文章看得有点晕了,要在好好理解下!
KaneTing
KaneTing
牛!之前在oschina上看到mybatis分页插件,原来是楼主这位高人写的,佩服!!
准备试用这个分页插件在自己的项目中使用。
Liuzh_533
Liuzh_533

引用来自“撒哈拉的小猫”的评论

Mybatis是编程语言还是系统来的?--来自blog.clmao.com土豪版灌水机
是一个持久化框架。。操作数据库的。。和hibernate是一类。
欲望故事
欲望故事
Mybatis是编程语言还是系统来的?--来自blog.clmao.com土豪版灌水机
Mybatis 分页插件 3.2.0 发布

Mybatis分页插件 - PageHelper说明 V3.2.0: 统一返回值为Page(可以直接按List使用),方便在页面使用EL表达式,如${page.pageNum},${page.total} 解决count sql在oracle中的错误 增加了对H...

Liuzh_533
2014/06/09
5.7K
28
Mybatis 分页插件 3.0 发布

感谢大家的支持,通过收集建议,对分页插件做了多项改进。现在正式发布3.0版本。 v3.0 现在支持两种形式的分页,使用PageHelper.startPage方法或者使用RowBounds参数 PageHelper.startPage方...

Liuzh_533
2014/05/22
3.6K
54
Mybatis3.4.x技术内幕(二十三):Mybatis面试问题集锦(大结局)

Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的目...

祖大俊
2016/09/17
10.9K
34
Java面试----2018年MyBatis常见实用面试题整理

Java面试----2018年MyBatis常见实用面试题整理 1、什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存...

优惠券活动
04/29
0
0
MyEclipse2015整合SSM框架:详解Mybatis逆向工程配置一对一关联表,查询结果排序问题

MyEclipse2015整合SSM框架:详解Mybatis逆向工程配置一对一关联表,查询结果排序问题 先说问题:在搭建SSM(Spring+SpringMVC+Mybatis)框架,从后台数据库查询出数据提供给前端页面进行分页...

优惠券活动
04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
34分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
37分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
41分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
50分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部