分页工具类
写的一个分页工具类,如果有问题的话,请指正,谢谢
import java.util.ArrayList;
import java.util.List;
/**
* 分页工具类
*
* @author user
*
*/
public class Pager {
private static final int DEFAULT_PAGESIZE = 10;// 默认分页的每页显示的条数
private static final int DEFAULT_PAGENUM = 5;// 默显示页码的数量
private int pagerIndex;// 当前的页码
private int pagerCount;// 总页码
private int pageSize;// 每页显示的条数
private int recordCount;// 总记录数
private int offsetNum;// 显示页码数量的偏移量
private int pageNum;// 显示页码的数量
public Pager() {
}
/**
* 构造函数,初始化分页的信息,自动修正
*
* @param pageIndex
* 当前的页码
* @param recordCount
* 总记录数
* @param pageSize
* 分页每页显示的条数
*/
public Pager(int pageIndex, int recordCount, int pageSize) {
this.pagerIndex = pageIndex;
this.recordCount = recordCount;
this.pageSize = pageSize < 1 ? Pager.DEFAULT_PAGESIZE : pageSize;
this.pagerCount = (this.recordCount - 1) / pageSize + 1;
if (this.pagerIndex < 1)
this.pagerIndex = 1;
if (this.pagerIndex > pagerCount)
this.pagerIndex = this.pagerCount;
this.setPageNum(Pager.DEFAULT_PAGENUM);
}
/**
* 构造函数,初始化分页的信息,自动修正
*
* @param pageIndex
* 当前的页码
* @param recordCount
* 总记录数
* @param pageSize
* 分页每页显示的条数
* @param pagerNum
* 每页显示的条数
*/
public Pager(int pageIndex, int recordCount, int pageSize, int pagerNum) {
this(pageIndex, recordCount, pageSize);
this.setPageNum(pagerNum);
}
/**
* 设置分页的信息,自动修正
*
* @param pageIndex
* 当前的页码
* @param recordCount
* 总记录数
* @param pageSize
* 分页每页显示的条数
*/
public void setPagerInfo(int pageIndex, int recordCount, int pageSize) {
this.pagerIndex = pageIndex;
this.recordCount = recordCount;
this.pageSize = pageSize < 1 ? Pager.DEFAULT_PAGESIZE : pageSize;
this.pagerCount = (this.recordCount - 1) / pageSize + 1;
if (this.pagerIndex < 1)
this.pagerIndex = 1;
if (this.pagerIndex > pagerCount)
this.pagerIndex = this.pagerCount;
}
/**
* 得到上一页
*
* @return
*/
public int getProvPageIndex() {
return (this.pagerIndex - 1) < 1 ? 1 : this.pagerIndex - 1;
}
/**
* 得到下一页
*
* @return
*/
public int getNextPageIndex() {
return (this.pagerIndex + 1) > this.pagerCount ? pagerCount : this.pagerIndex + 1;
}
public int getPagerIndex() {
return pagerIndex;
}
public int getPagerCount() {
return pagerCount;
}
public int getPageSize() {
return pageSize;
}
public int getRecordCount() {
return recordCount;
}
/**
* 设置显示页码的数量
*
* @param pageNum
* 显示页码的数量
*/
private void setPageNum(int pageNum) {
pageNum = pageNum % 2 == 0 ? ++pageNum : pageNum;// 页数目录的数量只能为奇数
pageNum = pageNum < 1 ? Pager.DEFAULT_PAGENUM : pageNum;// 如果显示的页码数量小于1,则设置为默认值
pageNum = pageNum > this.pagerCount ? (this.pagerCount % 2 ==0&&this.pagerCount>2 ? this.pagerCount - 1 : this.pagerCount)
: pageNum;// 如果显示页码的数量大于总页数,则邓等于页码德总页数
this.offsetNum = (pageNum - 1) / 2;
this.pageNum = pageNum;
}
/**
* 分页目录显示样式
*
* @return
*/
public List<Integer> getShowPageStyle() {
List<Integer> list = new ArrayList<Integer>();
// 当分页的总数量小于等于显示分页的数量
if (this.pagerCount <= this.pageNum) {
for (int i = 1; i <= this.pagerCount; i++) {
list.add(i);
}
return list;
}
// 显示分页数量的偏移量大于当前的页码
if (this.offsetNum >= this.pagerIndex) {
for (int i = 1; i <= this.pageNum; i++) {
list.add(i);
}
return list;
}
// 当前的页码在最后几页且在偏移量范围之内
if (this.pagerIndex >= this.pagerCount - this.offsetNum) {
for (int i = pagerCount - this.pageNum + 1; i <= this.pagerCount; i++) {
list.add(i);
}
return list;
}
// 普通情况
for (int i = this.pagerIndex - offsetNum; i <= this.pagerIndex + this.offsetNum; i++) {
list.add(i);
}
return list;
}
public static void main(String[] args) {
Pager pager = new Pager(1, 100, 10);
List<Integer> list = pager.getShowPageStyle();
for (Integer integer : list) {
System.out.println(integer);
System.out.println("================");
}
}
}