PageHelper是一个非常优秀的基于MyBatis分页插件,但是使用PageHelper不仅仅是简单的引入jar包。本文将从几个方面详细阐述PageHelper中的核心概念——PageHelperPageInfo,并给出对应的代码示例。
一、基础概念
PageHelperPageInfo是PageHelper插件中页面信息的核心封装类,主要包括以下内容:
1、pageNum:当前页码
2、pageSize:每页显示的数据条数
3、size:当前页实际数据条数
4、startRow:当前页第一条数据的行号
5、endRow:当前页最后一条数据的行号
6、total:总数据条数
7、pages:总页数
8、list:当前页的数据列表
9、prePage:上一页的页码
10、nextPage:下一页的页码
11、isFirstPage:是否为第一页
12、isLastPage:是否为最后一页
13、hasPreviousPage:是否有前一页
14、hasNextPage:是否有下一页
15、navigatePages:连续显示的页码数量
16、navigatepageNums:所有导航页号
17、navigateFirstPage:导航条上的第一页
18、navigateLastPage:导航条上的最后一页
public class PageHelperPageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
//getter、setter方法省略
private int pageNum; // 当前页码
private int pageSize; // 每页的数据条数
private int size; // 当前页实际的数据条数
private int startRow; // 当前页第一条数据的行号
private int endRow; // 当前页最后一条数据的行号
private long total; // 数据总条数
private int pages; // 数据总页数
private List<T> list; // 当前数据列表
private int prePage; // 上一页页码
private int nextPage; // 下一页页码
private boolean isFirstPage = false; // 是否为第一页
private boolean isLastPage = false; // 是否为最后一页
private boolean hasPreviousPage = false; // 是否有前一页
private boolean hasNextPage = false; // 是否有下一页
private int navigatePages = 8; // 导航条上显示的连续页码数
private int[] navigatepageNums; // 所有导航页号
private int navigateFirstPage; // 导航条上的第一页
private int navigateLastPage; // 导航条上的最后一页
}
二、使用示例
1、获取PageHelperPageInfo信息
在分页查询后,我们可以通过PageInfo类获取分页信息:
List<User> userList = userMapper.selectByPage(pageNum, pageSize);
PageHelperPageInfo<User> pageInfo = new PageHelperPageInfo<>(userList);
2、输出PageHelperPageInfo信息
直接将PageHelperPageInfo对象输出,无需对其toString方法进行重写,输出可得到如下信息:
PageInfo{pageNum=2, pageSize=10, size=10, startRow=10, endRow=19, total=20,
pages=2, list=..., prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true,
hasNextPage=true, navigatePages=8, navigatepageNums=[1, 2], navigateFirstPage=1, navigateLastPage=2}
3、使用PageHelper提供的方法
PageHelper提供了很多便捷的方法来处理分页逻辑,其中getPageInfo方法可以直接获取PageHelperPageInfo对象。我们还可以通过setOrderBy方法设置排序规则,以及startPage和endPage方法设置分页信息:
PageHelper.startPage(pageNum, pageSize);
PageHelper.orderBy("id");
List<User> userList = userMapper.selectAll();
PageHelperPageInfo<User> pageInfo = new PageHelperPageInfo<>();
pageInfo.setList(userList);
PageHelperPageInfo<User> pageInfo2 = PageHelper.getPageInfo(userList);
三、常用设置
1、导航页码数
通过navigatePages设置导航条上显示的连续页码数量,代码示例如下:
PageHelper.startPage(pageNum, pageSize);
PageHelperPageInfo<User> pageInfo = PageHelperPageInfo<>();
pageInfo.setNavigatePages(5);
2、是否自动统计总数
通过setCount方法设置是否自动统计总数,默认自动统计,代码示例如下:
PageHelper.startPage(pageNum, pageSize);
PageHelperPageInfo<User> pageInfo = PageHelperPageInfo<>();
pageInfo.setCount(false);
3、导航条上的第一页和最后一页
通过navigateFirstPage和navigateLastPage设置导航条上的第一页和最后一页,代码示例如下:
PageHelper.startPage(pageNum, pageSize);
PageHelperPageInfo<User> pageInfo = PageHelperPageInfo<>();
pageInfo.setNavigateFirstPage(1);
pageInfo.setNavigateLastPage(pageInfo.getPages());
四、总结
PageHelperPageInfo是PageHelper插件中页面信息的核心封装类,通过PageHelperPageInfo我们可以轻松地获取到分页相关的信息,并进行便捷的处理。本文从PageHelperPageInfo的基础概念、使用示例和常用设置三个方面进行了详细的阐述,相信读者已经掌握了PageHelperPageInfo的用法。