PageHelper 是 MyBatis 中非常方便的方分页插件。
PageHelper 的三种使用方式
RowBounds 方式的调用
PageHelper.startPage 静态方法调用
除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,
紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。
public List<DiscussListVO> getDiscussList(Integer pageNum, Integer pageSize) {ArrayList<DiscussListVO> list = new ArrayList<>();//获取第 1 页,10 条内容,默认查询总数 countPageHelper.startPage(pageNum, pageSize);List<Discuss> discussList = discussMapper.selectAll();// 用 PageInfo 对结果进行包装PageInfo<Discuss> page = new PageInfo<>(discussList);// PageInfo 包含了非常全面的分页属性page.getPageNum();page.getPageSize();page.getStartRow();page.getEndRow();page.getTotal();page.getPages();page.getNavigateFirstPage();page.getNavigateLastPage();page.isIsFirstPage();page.isIsLastPage();page.isHasPreviousPage();page.isHasNextPage();return null;}
使用参数方式
PageInfo 类中的信息
public class PageInfo<T> extends PageSerializable<T> {public static final int DEFAULT_NAVIGATE_PAGES = 8;public static final PageInfo EMPTY = new PageInfo(Collections.emptyList(), 0);// 当前页private int pageNum;// 每页的数量private int pageSize;// 当前页的数量private int size;// 当前页面第一个元素在数据库中的行号private long startRow;// 当前页面最后一个元素在数据库中的行号private long endRow;// 总页数private int pages;// 前一页private int prePage;// 下一页private int nextPage;// 是否为第一页private boolean isFirstPage;// 是否为最后一页private boolean isLastPage;// 是否有前一页private boolean hasPreviousPage;// 是否有下一页private boolean hasNextPage;// 导航页码数private int navigatePages;// 所有导航页号private int[] navigatepageNums;// 导航条上的第一页private int navigateFirstPage;// 导航条上的最后一页private int navigateLastPage;}
PageHelper 整合 SpringBoot
- 添加依赖
- 添加配置项
- 使用上面三种方式之一,开启分页查询
<!-- 分页插件 --><!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.spring.boot.version}</version></dependency>
pagehelper:# 分页参数合理化,如果 pageNum<=0 会查询第一页,如果 pageNum>总页数 会查询最后一页reasonable: true
