博为峰JavaEE技术文章 ——MyBatis RowBounds分页

 

我们知道,在查询数据库时,如果数据库表中的数据比较多,都会使用到分页技术。Mybatis也支持分页查询,可以借助RowBounds对象,对数据分页,但是,基于RowBounds的分页是对ResultSet结果集进行分页,也就是逻辑分页,并不是物理分页。换句话说,也就是先把数据库中的数据全部查询出来,然后在进行过滤。今天小博老师先给大家介绍下RowBounds对象的 使用,下节课我们再探讨如何实现物理分页。

先来了解下RowBounds类的源码:

 

这个类很简单,只有offset和limit两个参数,表示从第几条开始,取多少条。

接下来看看Mybatis默认分页实现方法org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap()的源码:

 

对查询出的结果进行skipRows处理,skipRows代码如下:


skipRows只是根据rowBounds对象的offset参数,跳过或者滚动到具体的起始行。

再来看看shouldProcessMoreRows:


由此可以看出,Mybatis默认的RowBounds分页是对ResultSet的分页,执行效率不会很理想。如果要实现高效率的分页,可以通过拦截器的方式实现。下节课我们实现一个简单的分页拦截器。这里判断读取的结果集数量是否与rowBounds对象 limit参数相符,如果以获取到相应数量的结果,则不再继续执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值