Mybatis分页插件PageHelper的使用

PageHelper项目地址:

oschub的项目地址:http://git.oschina.net/free/Mybatis_PageHelper
github的项目地址:https://github.com/pagehelper/Mybatis-PageHelper

PageHelper的使用例子

https://gitee.com/xuguolong/mybatis-pagehelper-sample


这个大家再熟悉不过的MySQL的分页查询语句

select * from t_user limit 0 , 15
1、简单了解分页的几个关键要素

页码(pageNum): 即表示当前查询第几页的数据
每页大小(pageSize):即每页显示的记录数

总页数 :当前查询满足条件的总页数,总页数 = 总记录数/pageSize
总记录数:当前查询满足条件的总记录条数


2、分页的基本思想
  • 根据pageNum和pageSize计算它的数据偏移量
  • 从当前数据偏移量开始,取出pageSize条记录

3、不使用插件,使用Mybatis自带的RowBounds实现分页
  • 使用Mybatis自带的分页功能(PageBounds)
RowBounds rowBounds = new RowBounds(0 ,10);
List<User> users = userMapper.selectUserListWithRowBounds(null ,rowBounds);
System.out.println(users);
for(User user :users){
    System.out.println(user);
}

缺点:

1、内存中分页,即它会先把所有满足条件的数据都查询出来,然后再在内存中筛选分页数据,这个对于大数据量的情况下,是非常致命的。
2、没有统计总记录数、总页数需要自己计算

  • 自己实现分页功能
/**
 * 自己实现分页逻辑
 */
@Test
public void page2() {
    List<User> users = userMapper.selectUserListForPage(null ,null ,10 ,15);
    System.out.println(users);
    for(User user :users){
        System.out.println(user);
    }
}

xml配置:
<!--自己实现分页逻辑 -->
<select id="selectUserListForPage" parameterType="map" resultType="com.xgl.mybatis.study.model.User">
        select * from tb_user
        <where>
            <if test="id !=null">
                and id=#{id}
            </if>
            <if test="name != null ">
                and name=#{name}
            </if>
        </where>

        limit #{pageOffset} ,#{pageSize}
    </select>

缺点:

1、总记录数、总页数需要自己计算
2、代码不能重复利用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值