浅谈分页插件PageHelper

PageHelper是一款Mybatis的物理分页插件,提高大数据量的查询性能。本文介绍了其分页思想、使用方式及源码解析,包括startPage方法、PageInfo构造和分页参数计算等。
摘要由CSDN通过智能技术生成

前言:
PageHelper是一款开源免费的Mybatis第三方物理分页插件。所谓物理分页,也就是每次都会根据要查询的参数去对应的数据库进行查询,真正实现了按需动态查询。逻辑分页,一般是指一次性查询所有的数据,再由service根据参数传递给前端对应页数的数据,还有一种就是传递给前端所有的数据,再由前端控制显示的数据。因此,对于数据量大的情况下,物理分页要比逻辑分页性能高很多。

分页思想
笔者在未接触过分页插件之前,曾经自己造过分页的轮子,一般来说,分页需要有这么几个参数:
符合条件的数据量count:这个一般就是根据sql条件count(1)传递回数据量;
每页的数据量pageSize:这个参数由开发者自行确定;
查询页码pageNum:这个参数一般由前端传到后端,但是要保证0<pageNum<=Math.ceil(count/pageSize)。

PageHelper的引用
关于PageHelper的引入,详情参考官网讲述:https://pagehelper.github.io/docs/howtouse/#2

PageHelper在代码中的使用
一般情况下笔者习惯使用如下代码:

  PageHelper.startPage(pageNum, pageSize);  
  .....省略server的内容,一般返回一个list
  PageInfo<类名> pageInfo = new PageInfo<>(list);

PageHelper源码解析

  1. 在PageHelper.startPage(pageNum, pageSize),这段代码表示分页的开始,意思是从第pageNum页开始,每页显示pageSize条记录。我们进入源码,发现是这么一个泛型方法:
public static <E> Page<E> startPage(int pageNum, int pageSize) {
        return startPage(pageNum, pageSize, DEFAULT_COUNT);
    }

其中,DEFAULT_COUNT我们翻阅前边,发现是一个boolean参数,

protected static boolean DEFAULT_COUNT = true;

该参数表示由分页插件默认查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值