java數據列表 分頁對象
[Java]代碼
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* 分頁
*
* from project: http://www.zyiqibook.com/201505/article0511162118297.html
*/
public class Page<T> implements Serializable {
/**
*
*/
private static final long serialVersionUID = -4906400433425467744L;
private static int DEFAULT_PAGE_SIZE = 20;
/**
* 每頁記錄條數
*/
private int pageSize = DEFAULT_PAGE_SIZE;
/**
* 當前頁第一條數據在List中的位置,從0開始
*/
private long start;
private List<T> data;
private long totalCount; // 總記錄數
/**
* 構造方法
*/
public Page() {
this(0, 0, DEFAULT_PAGE_SIZE, new ArrayList<T>());
}
/**
* 默認構造方法.
*
* @param start 本頁數據在數據庫中的起始位置
* @param totalSize 數據庫中總記錄條數
* @param pageSize 本頁容量
* @param data 本頁包含的數據
*/
public Page(long start, long totalSize, int pageSize, Collection<T> data) {
this.pageSize = pageSize;
this.start = start;
this.totalCount = totalSize;
this.data = new ArrayList<T>(data);
}
/**
* 取總記錄數.
*/
public long getTotalCount() {
return this.totalCount;
}
/**
* 取總頁數.
*/
public long getTotalPageCount() {
if (pageSize <= 0) {
return 0;
}
return (totalCount + pageSize - 1) / pageSize;
}
/**
* 取每頁數據容量.
*/
public int getPageSize() {
return pageSize;
}
/**
* 取當前頁中的記錄.
*/
public List<T> getResult() {
return data;
}
/**
* 取該頁當前頁碼,頁碼從1開始.
*/
public int getCurrentPageNo() {
return (int)(start / pageSize + 1);
}
/**
* 該頁是否有下一頁.
*/
public boolean hasNextPage() {
return this.getCurrentPageNo() < this.getTotalPageCount();
}
/**
* 該頁是否有上一頁.
*/
public boolean hasPreviousPage() {
return this.getCurrentPageNo() > 1;
}
/**
* 獲取任一頁第一條數據在數據集的位置,每頁條數使用默認值.
*/
protected static int getStartOfPage(int pageNo) {
return getStartOfPage(pageNo, DEFAULT_PAGE_SIZE);
}
/**
* 獲取任一頁第一條數據在數據集的位置.
*/
public static int getStartOfPage(int pageNo, int pageSize) {
return (pageNo - 1) * pageSize;
}
} 本文由用戶 BeulahGibbs 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!