java數據列表 分頁對象

BeulahGibbs 8年前發布 | 968 次閱讀 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!