JAVA 最好的分页类 FPage 。

java面试题网站:www.javaoffers.com

package cn.mh.elect.util;


import java.util.ArrayList;
import java.util.List;


/**分页对象
 * @author CMJ(曹明杰)
 * @date 2017-3-19 上午9:22:11
 */
public class FPage {



private int pageNum;//前台传来的页码  别名currentPage

private int pageSize;//显示的条数

private int begeinIndex;//查询分页开始索引

private int allCount;//总条数

private int allPageSize;//总页数

private int firstPage;//首页

private int endPage;//尾页
/**利用窗户的思想:把前台传来的当前页当作窗户的中心(窗户的中心索引位置:长度(基数最好--)加+1再除于2,偶数则加+2后再除于2)**/
private int viewFirstPageNnm;//逻辑上的起始页---窗户最左端   (为任意正负数)

private int viewEndPageNum;//逻辑上结束页---窗户最右端  (为任意正负数)

private int[] first_endPageNum;//存放显示的页码---窗户的范围内容

private int viewPageSize; //jsp页面要显示的页数 默认为10


private List<Object> list = new ArrayList<Object>();//存放查询对象的集合

private boolean hasNextPage = false;//判断是否有下一页(默认没有)

/** 分页的构造方法 初始化数据
* @param pageNum 前端传来的查询页码  ,默认为1,如果页码大于最大页,则pageNum的值为最大页
* @param allCount 从数据库查询的总条数
*/
public FPage(int pageNum, int allCount) {
super();
this.pageSize = 3;//默认为3条
this.viewPageSize = 10;//
this.pageNum = pageNum;
this.allCount = allCount;
/**计算总页数**/
this.allPageSize = this.allCount%pageSize==0? this.allCount/pageSize : this.allCount/pageSize+1;

if(pageNum<=0)
this.pageNum = 1;
if(pageNum>this.allPageSize)
this.pageNum = this.allPageSize;

/**计算查询的开始索引值**/
this.begeinIndex = (this.pageNum-1)*this.pageSize;
/**开始页码默认值为1**/
this.firstPage = 1;
/**计算尾页码(总页数就是为尾页码)**/
this.endPage = this.allPageSize;
//算出窗口 最前端和最后端的位置
if(this.allPageSize>this.viewPageSize){//总页数一定大于页数长度
if(this.viewPageSize/2==0){//如果是偶数
this.viewFirstPageNnm = this.pageNum-((this.viewPageSize+2)/2-1);
this.viewEndPageNum = this.pageNum+(this.viewPageSize-((this.viewPageSize+2)/2));
}else{//奇数
this.viewFirstPageNnm = this.pageNum - ((this.viewPageSize+1)/2-1);
   this.viewEndPageNum = this.pageNum+(this.viewPageSize-((this.viewPageSize+1)/2));
}
}

/**两种情况:1:显示页数大于等于总页数 viewPageSize>allPageSize, 2:显示页数小于总页数**/

if(this.viewPageSize>=this.allPageSize){
first_endPageNum = new int[this.allPageSize];//指定长度
//存放页码
for(int i = 0;i<this.allPageSize;i++){
first_endPageNum[i] = i+1;
}
}else{
//-------------------
first_endPageNum = new int[this.viewPageSize];
//判断当前 左窗口端是否小于1  默认 1 2 3 4  ...viewPageSize 包含1
if(this.viewFirstPageNnm<1){
for(int i = 0;i<this.viewPageSize;i++){
first_endPageNum[i] = i+1;
}
}//判断当前 右窗口端是否超出了页数的最大值 例如 7 8 9 ...viewPageSize 不包括7
else if(this.viewEndPageNum>this.allPageSize){
for(int i = 0;i<this.viewPageSize;i++){
first_endPageNum[i] = this.allPageSize-(this.viewPageSize-(i+1));
}
}else{//窗口的前后端都在范围之内
first_endPageNum = new int[this.viewPageSize];
for(int i=0;i<this.viewPageSize;i++){
first_endPageNum[i] = this.viewFirstPageNnm+i;
                                   }
}
//------------------
}




}


public boolean isHasNextPage() {
if(this.allPageSize>this.pageNum)
this.hasNextPage = true;
return hasNextPage;
}


public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}


public List<Object> getList() {
return list;
}


public int getViewFirstPageNnm() {
return viewFirstPageNnm;
}


public void setViewFirstPageNnm(int viewFirstPageNnm) {
this.viewFirstPageNnm = viewFirstPageNnm;
}


public int getViewEndPageNum() {
return viewEndPageNum;
}


public void setViewEndPageNum(int viewEndPageNum) {
this.viewEndPageNum = viewEndPageNum;
}


public int[] getFirst_endPageNum() {
return first_endPageNum;
}


public void setFirst_endPageNum(int[] first_endPageNum) {
this.first_endPageNum = first_endPageNum;
}


public int getViewPageSize() {
return viewPageSize;
}


public void setViewPageSize(int viewPageSize) {
this.viewPageSize = viewPageSize;
}


public void setList(List<Object> list) {
this.list = list;
}


public int getPageNum() {
return pageNum;
}


public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}


public int getPageSize() {
return pageSize;
}


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


public int getBegeinIndex() {
return begeinIndex;
}


public void setBegeinIndex(int begeinIndex) {
this.begeinIndex = begeinIndex;
}


public int getAllCount() {
return allCount;
}


public void setAllCount(int allCount) {
this.allCount = allCount;
}


public int getAllPageSize() {
return allPageSize;
}


public void setAllPageSize(int allPageSize) {
this.allPageSize = allPageSize;
}


public int getFirstPage() {
return firstPage;
}


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


public int getEndPage() {
return endPage;
}


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
















}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值