使用PageInfo做分页时手动设置参数的实现方式
转载请标明出处:
原文首发于: http://www.zhangruibin.com
本文出自 RebornChang的博客
在做项目开发的时候,pagehelper是我们经常使用的一个分页插件,源码地址:com.github.pagehelper。
针对com.github.pagehelper的基本使用方法及介绍在这片博文中就不进行介绍了,不知道pagehelper是什么或者不清楚怎么用的朋友请自行百度,这里不再赘述。
博主写技术文章一般喜欢嵌套在现实的生产开发中进行介绍,本次的介绍也依然是博主在进行项目开发的时候遇到的问题,因为走了写弯路,所以写出来以供参考。
需求背景
在一个项目中我们有很多需要调用外部接口,所以客户想要一个对这些接口的调用情况统计,比如说接口A,调用了多少次,每次成功还是失败,携带的参数以及返回的参数是什么,请求的响应时间是多少。基于这个需求引出了下面的这个问题:统计的时候,对统计结果怎样分页。
统计结果进行分页
如果直接使用pagehelper进行分页的话,就直接限制到了数据库执行sql的分页,这样就不能保证数据的完整性,因为我要在页面上展示的20条数据,可能是由几万条数据进行分类整理统计出来的20条信息,那就不能用pagehelper进行自动分页了,这时候就需要手动分页。
手动分页所需的类PageInfo里面各参数含义
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//当前页展示的数据的起始行
private int startRow;
//当前页展示的数据的结束行
private int endRow;
//总记录数--所需要进行分页的数据条数
private long total;
//总页数
private int pages;
//页面展示的结果集,比如说当前页要展示20条数据,则此list为这20条数据
private List<T> list;
//前一页页码
private int prePage;
//下一页页码
private int nextPage;
//是否为第一页,默认为false,是第一页则设置为true
private boolean isFirstPage ;
//是否为最后一页默认为false,是最后一页则设置为true
private boolean isLastPage ;
//是否有前一页,默认为false,有前一页则设置为true
private boolean hasPreviousPage ;
//是否有下一页,默认为false,有后一页则设置为true