Java封装分页工具类+详解

参数和属性解释

1. listData:当前页数据的集合(参数)
2. currentPage:当前页的页数(参数)
3. pageSize:每页集合存放多少条数据的大小(参数)
4. recordTotal:所有数据的总条数(参数)
5. previousPage:当前页的上一页
6. nextPage:当前页的下一页
7. firstPage:始终未1,表示首页
8. lastPage:最后一页
9. totalPage:数据总集合一共可被分为多少页
10. beginPage:当分页导航为(4,5,6,7,8)时,4为开始页
11. endPage:当分页导航为(4,5,6,7,8)时,8为开始页
12. totalIndexCount:分页导航为(2,3,4,5,6)或者(4,5,6,7,8)显示个数为5个。如果数据量不是很大的话,建议使用5就好了,如果数据量大可分为很多页,可以自己改成大一点的值,最好不要超多10,不然显示的页数数值太多,不美观。

package com.tree.utils;

import java.io.Serializable;
import java.util.List;

/**
 * @Description:分页工具类
 * @author 刘鸿伟
 *
 */
public class PageResult implements Serializable {
	private static final long serialVersionUID = 1L;
	// 数据库查询值
	private List<?> listData; // 每页的内容 结果集
	private int recordTotal; // 总条数
	// 页面传入值
	private int currentPage; // 当前页
	private int pageSize; // 每页大小
	// 计算值
	private int previousPage; // 前一页
	private int nextPage; // 下一页
	private int firstPage = 1; // 第一页 固定为1
	private int lastPage; // 最后一页
	private int totalPage; // 总页数
	// 引用谷歌算法 分页
	private int beginPage; // 开始页
	private int endPage; // 结束页
	private int totalIndexCount = 5; // 显示的页数个数 默认为5个

	public PageResult() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * 
	 * @param listData    结果集
	 * @param currentPage 当前页
	 * @param pageSize    每页条数
	 * @param recordTotal 总条数
	 */
	public PageResult(List<?> listData, int currentPage, int pageSize, int recordTotal) {
		super();
		this.currentPage = currentPage;
		this.pageSize = pageSize;
		this.recordTotal = recordTotal;
		this.listData = listData;

		// 总页数
		this.totalPage = this.recordTotal % this.pageSize > 0 ? this.recordTotal / this.pageSize + 1
				: this.recordTotal / this.pageSize;

		// 最后一页==总页数
		this.lastPage = this.totalPage;

		// 前一页
		if (this.currentPage > 1) {
			this.previousPage = this.currentPage - 1;
		} else {
			this.previousPage = this.firstPage;
		}

		// 下一页
		if (this.currentPage < this.lastPage) {
			this.nextPage = this.currentPage + 1;
		} else {
			this.nextPage = this.lastPage;
		}

		/**
		 * 首页 上页 [1] 2 3 4 5 6 7 8 9 10 下页 末页 当前第1/18页一共53条记录 每页5 条
		 * 
		 * @param totalIndexCount 总索引数 (要显示的页数个数:3 4 5 6 7 为5个)
		 * @param currentPage     当前页
		 * @param totalPage       总页数
		 * @return
		 */
		this.beginPage = currentPage - (totalIndexCount % 2 == 0 ? totalIndexCount / 2 - 1 : totalIndexCount / 2);
		this.endPage = currentPage + totalIndexCount / 2;

		if (this.beginPage < 1) {
			this.beginPage = 1;
			if (totalPage >= totalIndexCount)
				this.endPage = totalIndexCount;
			else
				this.endPage = totalPage;
		}
		if (this.endPage > totalPage) {
			this.endPage = totalPage;
			if ((this.endPage - totalIndexCount) > 0)
				this.beginPage = this.endPage - totalIndexCount + 1;
			else
				this.beginPage = 1;
		}

	}

	public List<?> getListData() {
		return listData;
	}

	public void setListData(List<?> listData) {
		this.listData = listData;
	}

	public int getRecordTotal() {
		return recordTotal;
	}

	public void setRecordTotal(int recordTotal) {
		this.recordTotal = recordTotal;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPreviousPage() {
		return previousPage;
	}

	public void setPreviousPage(int previousPage) {
		this.previousPage = previousPage;
	}

	public int getNextPage() {
		return nextPage;
	}

	public void setNextPage(int nextPage) {
		this.nextPage = nextPage;
	}

	public int getFirstPage() {
		return firstPage;
	}

	public void setFirstPage(int firstPage) {
		this.firstPage = firstPage;
	}

	public int getLastPage() {
		return lastPage;
	}

	public void setLastPage(int lastPage) {
		this.lastPage = lastPage;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getBeginPage() {
		return beginPage;
	}

	public void setBeginPage(int beginPage) {
		this.beginPage = beginPage;
	}

	public int getEndPage() {
		return endPage;
	}

	public void setEndPage(int endPage) {
		this.endPage = endPage;
	}

	public int getTotalIndexCount() {
		return totalIndexCount;
	}

	public void setTotalIndexCount(int totalIndexCount) {
		this.totalIndexCount = totalIndexCount;
	}

	@Override
	public String toString() {
		return "PageResult [listData=" + listData + ", recordTotal=" + recordTotal + ", currentPage=" + currentPage
				+ ", pageSize=" + pageSize + ", previousPage=" + previousPage + ", nextPage=" + nextPage
				+ ", firstPage=" + firstPage + ", lastPage=" + lastPage + ", totalPage=" + totalPage + ", beginPage="
				+ beginPage + ", endPage=" + endPage + ", totalIndexCount=" + totalIndexCount + "]";
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值