5、实现通用分页功能一(创建分页实体)

一、需求

页码显示的格式类型于下图所示


显示的主要内容有:

1、总记录数

2、总页数

3、当前页码

4、每页显示的记录数

5、页码列表的第一个页号,如上图右方中的3

6、页码列表的最后一个页号,上图中是12

7、当前页显示的记录的集合

页码列表的格式是左四右五,即以当前页码为中心,左边显示四个页码,右边显示五个页码,如上图中,当前页码是7,所以页码列表为3,4,5,6,7,8,9,10,11,12

二、分页实体

可以根据上面的需求分析,创建分页实体类

Page.java

package com.charlie.shop.domain.page;

/**
 * 这是分页实体类
 * @author charlie
 *
 */

import java.util.List;

public class Page<T> {
	/**当前页码,默认是1**/
	private int pageNow=1;
	/**每页显示的记录数**/
	private int pageSize;
	/**当前页显示的记录列表**/
	private List<T> recordList;
	/**总记录数**/
	private int recordCount;
	/**页码列表的第一个页码**/
	private int beginPage;
	/**页码列表的最后一个页码**/
	private int endPage;
	/**总页数**/
	private int pageCount;
	
	/**
	 * 构造器限制为需要四个参数,是确保对象的这四个属性都有值
	 * @param pageNow  当前页码
	 * @param pageSize 每页显示的记录
	 * @param recordCount 总记录
	 * @param recordList  当前页待显示数据列表
	 */
	public Page(int pageNow,int pageSize,int recordCount,List<T> recordList){
		this.pageNow = pageNow;
		this.pageSize = pageSize;
		this.recordCount = recordCount;
		this.recordList = recordList;
		//====下面是计算其他三个属性的值=======
		/*
		 * 计算总页数 两种方式
		 * 方式一:recordCount/pageSize 如果有余数则要加1,如果刚好整除则不用加1
		 * 方式二:(recordCount + pageSize - 1) / pageSize
		 */
		pageCount = (recordCount+pageSize-1)/pageSize;
		
		/*下面计算页码列表的开始索引和结束索引
		 * 默认是页码列表长度为10: 前面四页索引 +当前页码+后五页
		 * 如果总页数小于或等于10的话,就全部显示
		 * 总页数大于10的话:
		 * 如果前面不够四页就后面补够
		 * 如果后面不够五页就前面补
		 */
		//先判断总页数是否在10以内
		if(pageCount<=10){
			//不超过10页,全部显示即可
			beginPage = 1;
			endPage = pageCount;
		}else if(pageNow-4<1){
			//前面不够四页,后面补,即显示最前面10页
			beginPage = 1;
			endPage = 10;
		}else if(pageNow+5>pageCount){
			//后面不够五页
			endPage = pageCount;
			beginPage = endPage-9;
		}else {
			//前四后五都满足
			beginPage = pageNow-4;
			endPage = pageNow+5;
		}
	}
	//------下面是getter/setter方法
	public int getPageNow() {
		return pageNow;
	}

	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}

	public int getPageSize() {
		return pageSize;
	}

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

	public List<T> getRecordList() {
		return recordList;
	}

	public void setRecordList(List<T> recordList) {
		this.recordList = recordList;
	}

	public int getRecordCount() {
		return recordCount;
	}

	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}

	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 getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值