分页工具类

代码如下:

package com.dayuanit.util;

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

/**
 * 分页工具类
 */
public class PageUtils {
    //单页行数
    private Integer pageRows = 5;
    //开始索引
    private Integer startIndex;
    //总行数
    private Integer totalRows;
    //总页数
    private Integer totalPages;
    //当前页码
    private Integer currentPageindex;
    //页号式导航, 最多显示页号数量为showPagesSize+1;这里显示5页
    private Integer showPagesSize = 4;

    public PageUtils(Integer totalRows, Integer currentPageindex) {
        this.totalRows = totalRows;
        this.currentPageindex = currentPageindex;

        //开始索引
        startIndex = getStartIndex();

        //总页数
        totalPages = getTotalPages();

    }


    public Integer getPageRows() {
        return pageRows;
    }

    public void setPageRows(Integer pageRows) {
        this.pageRows = pageRows;
    }

    //根据当前页码计算开始索引
    public Integer getStartIndex() {
        return (currentPageindex - 1) * pageRows;
    }

    public void setStartIndex(Integer startIndex) {
        this.startIndex = startIndex;
    }

    public Integer getTotalRows() {
        return totalRows;
    }

    public void setTotalRows(Integer totalRows) {
        this.totalRows = totalRows;
    }

    /**
     * 总页数
     *
     * @return
     */
    public Integer getTotalPages() {
        return (totalRows % pageRows != 0) ? (totalRows / pageRows + 1) : totalRows / pageRows;
    }

    public void setTotalPages(Integer totalPages) {
        this.totalPages = totalPages;
    }

    public Integer getCurrentPageindex() {
        return currentPageindex;
    }

    public void setCurrentPageindex(Integer currentPageindex) {
        this.currentPageindex = currentPageindex;
    }

    /**
     * 计算页码
     * @return
     */
    public List<Integer> getShowPages() {
        List<Integer> showPages = new ArrayList<>();
        int s = Math.max(currentPageindex - showPagesSize / 2, 1);
        int e = Math.min(s + showPagesSize, totalPages);

        if (e - s < showPagesSize) {
            s = Math.max(e - showPagesSize, 1);
        }

        for (int i = s; i <= e; i++) {
            showPages.add(i);
        }

        return showPages;
    }
}

实现效果如下:每页展示条数、显示页码数可以自行设置

猜你喜欢

转载自my.oschina.net/u/3446892/blog/1630333
今日推荐