PageHelper 是 MyBatis 中非常方便的方分页插件。

PageHelper 的三种使用方式

官网中有使用的说明。

RowBounds 方式的调用

PageHelper.startPage 静态方法调用

除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,
紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。

  1. public List<DiscussListVO> getDiscussList(Integer pageNum, Integer pageSize) {
  2. ArrayList<DiscussListVO> list = new ArrayList<>();
  3. //获取第 1 页,10 条内容,默认查询总数 count
  4. PageHelper.startPage(pageNum, pageSize);
  5. List<Discuss> discussList = discussMapper.selectAll();
  6. // 用 PageInfo 对结果进行包装
  7. PageInfo<Discuss> page = new PageInfo<>(discussList);
  8. // PageInfo 包含了非常全面的分页属性
  9. page.getPageNum();
  10. page.getPageSize();
  11. page.getStartRow();
  12. page.getEndRow();
  13. page.getTotal();
  14. page.getPages();
  15. page.getNavigateFirstPage();
  16. page.getNavigateLastPage();
  17. page.isIsFirstPage();
  18. page.isIsLastPage();
  19. page.isHasPreviousPage();
  20. page.isHasNextPage();
  21. return null;
  22. }

使用参数方式

PageInfo 类中的信息

  1. public class PageInfo<T> extends PageSerializable<T> {
  2. public static final int DEFAULT_NAVIGATE_PAGES = 8;
  3. public static final PageInfo EMPTY = new PageInfo(Collections.emptyList(), 0);
  4. // 当前页
  5. private int pageNum;
  6. // 每页的数量
  7. private int pageSize;
  8. // 当前页的数量
  9. private int size;
  10. // 当前页面第一个元素在数据库中的行号
  11. private long startRow;
  12. // 当前页面最后一个元素在数据库中的行号
  13. private long endRow;
  14. // 总页数
  15. private int pages;
  16. // 前一页
  17. private int prePage;
  18. // 下一页
  19. private int nextPage;
  20. // 是否为第一页
  21. private boolean isFirstPage;
  22. // 是否为最后一页
  23. private boolean isLastPage;
  24. // 是否有前一页
  25. private boolean hasPreviousPage;
  26. // 是否有下一页
  27. private boolean hasNextPage;
  28. // 导航页码数
  29. private int navigatePages;
  30. // 所有导航页号
  31. private int[] navigatepageNums;
  32. // 导航条上的第一页
  33. private int navigateFirstPage;
  34. // 导航条上的最后一页
  35. private int navigateLastPage;
  36. }

PageHelper 整合 SpringBoot

  1. 添加依赖
  2. 添加配置项
  3. 使用上面三种方式之一,开启分页查询
    1. <!-- 分页插件 -->
    2. <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
    3. <dependency>
    4. <groupId>com.github.pagehelper</groupId>
    5. <artifactId>pagehelper-spring-boot-starter</artifactId>
    6. <version>${pagehelper.spring.boot.version}</version>
    7. </dependency>
    1. pagehelper:
    2. # 分页参数合理化,如果 pageNum<=0 会查询第一页,如果 pageNum>总页数 会查询最后一页
    3. reasonable: true