數據分頁展示
package cn.gzsxt.util;
import java.util.List;
/**
* 分頁封裝
*/
public class PageUtil {
/**
* 1 數據裏面的數據總行數
*/
private int rowcount;// 數據裏面的數據總行數
/**
* 2 一頁多少行數據
*/
private int pagesize=10;// 一頁多少行數據
/**
* 3 查詢起始行 limit startrow,pagesize;
*/
private int startrow;//查詢起始行 limit startrow,pagesize;
/**
* 4 當前點擊的導航
*/
private int currnav;//當前點擊的導航
/**
* 5 頁面維護的固定導航個數
*/
private int navnum;//頁面維護的固定導航個數
/**
*6 頁面數據整體導航個數
*/
private int navcount;//頁面數據整體導航個數 總共多少頁
/**
*7 頁面展示的起始導航
*/
private int begin;//頁面展示的起始導航
/**
* 8 頁面維護展示的結束導航
*/
private int end;//頁面維護展示的結束導航
/**
* 9 上一頁
*/
private int prev;// 上一頁
/**
* 10 下一頁
*/
private int next;//下一頁
/**
* 11 首頁
*/
private int first=1;//首頁
/**
* 12尾頁
*/
private int last;//尾頁
/**
* 13 存放分頁的數據
*/
private List pageData;//存放分頁的數據
/**
*
* <p>Description: </p>
* @param rowcount 數據總行數
* @param pagesize 一頁顯示多少行數據
* @param currnav 當前點擊的導航
* @param navnum 頁面維護的固定導航個數
*/
public PageUtil(int rowcount, int pagesize, int currnav, int navnum) {
super();
this.rowcount = rowcount;
this.pagesize = pagesize;
this.currnav = currnav;
this.navnum = navnum;
// 總共多少頁 navcount 數據裏面的數據總行數/一頁多少行數據 ceil
this.navcount = (int)Math.ceil((rowcount*1.0)/pagesize);
this.last = this.navcount ;
//大於第一頁 增強容錯性
this.currnav = Math.max(this.first,currnav);//維護小於第一頁 維護固定第一頁 取最大
this.currnav =Math.min(this.currnav, this.last);//超過最後一頁,維護最後一頁 取最小
//3 當前頁的起始行 startrow (當前點擊的導航頁 -1)*一頁多少行數據
this.startrow= (currnav-1)*pagesize;
//處理上一頁
this.prev = Math.max(this.first, currnav -1);
//處理下一頁 如果當前導航頁是最後一頁
this.next = Math.min(this.navcount, currnav +1);
// begin 頁面展示的起始導航
this.begin =Math.max(1, currnav- navnum/2) ;
//end 頁面展示的結束導航
this.end = Math.min(navcount, begin + navnum-1);
//當前導航是76 -10 +1 =67 1 -10+1 = -8
if((this.end-this.begin)<(this.navnum-1) ){
this.begin = Math.max(1, this.last- navnum+1);
}
}
public PageUtil() {
super();
}
public int getRowcount() {
return rowcount;
}
public void setRowcount(int rowcount) {
this.rowcount = rowcount;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getStartrow() {
return startrow;
}
public void setStartrow(int startrow) {
this.startrow = startrow;
}
public int getCurrnav() {
return currnav;
}
public void setCurrnav(int currnav) {
this.currnav = currnav;
}
public int getNavnum() {
return navnum;
}
public void setNavnum(int navnum) {
this.navnum = navnum;
}
public int getNavcount() {
return navcount;
}
public void setNavcount(int navcount) {
this.navcount = navcount;
}
public int getBegin() {
return begin;
}
public void setBegin(int begin) {
this.begin = begin;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getPrev() {
return prev;
}
public void setPrev(int prev) {
this.prev = prev;
}
public int getNext() {
return next;
}
public void setNext(int next) {
this.next = next;
}
public int getFirst() {
return first;
}
public void setFirst(int first) {
this.first = first;
}
public int getLast() {
return last;
}
public void setLast(int last) {
this.last = last;
}
public List getPageData() {
return pageData;
}
public void setPageData(List pageData) {
this.pageData = pageData;
}
數據分頁展示