通用分页工具类

通用分页工具类

最近自己写了一套分页类,和大家分享下,请多多支持。

分页详细介绍,首先在即设置每页要显示的条数。通过前台传参获取当前页显示的页数计算出上一页、下一页,第一页,最后一页,页面要显示可选择的页数 等信息(此方法在pagenation.java)。
然后将查询出的list,装入pagenation ,返回至前台。

  • 分页入参模板(pageEntity.java)
  • 分页模板 (pagenation.java)
  • 实现层serviceImpl
  • 显示曾page.jsp
  • 效果图

  • 分页入参模板(pageEntity.java)

package com.wd.health.utils;

import java.sql.Connection;
import java.util.Date;

public class pageEntity {

    private Integer startRow =0;//当前页面开始行
    private Integer pageSize = 15;//每页显示多少条
    private Integer rowNum; //总共多少条
    private Integer pageNum=1;//当前页

    //get set 方法体 此处省略


}
  • 分页模板 (pagenation.java)
package com.wd.health.utils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName: Pagenation 
 * @Description: TODO(分页工具类) 
 * @date 2016年1月22日 上午10:24:42 
 * @author guowq
 */
public class Pagenation implements Serializable{
    private static final long serialVersionUID = 1L;
    // 传参或指定
    private int num; // 当前页号, 采用自然数计数 1,2,3,...
    private int size; // 页面大小:一个页面显示多少个数据

    // 需要从数据库中查找出
    private long rowCount;// 数据总数:一共有多少个数据
    private List<?> list;

    // 可以根据上面属性:num,size,rowCount计算出
    private int pageCount; // 页面总数
    private int startRow;// 当前页面开始行, 第一行是0行
    private int first = 1;// 第一页 页号
    private int last;// 最后页 页号
    private int next;// 下一页 页号
    private int prev;// 前页 页号
    private int start;// 页号式导航, 起始页号
    private int end;// 页号式导航, 结束页号
    private int numCount = 10;// 页号式导航, 最多显示页号数量为numCount+1;这里显示11页。
    public List<String> showPages = new ArrayList<String>(); //要显示的页号
    private Object queryClass;//保存查询条件
    private String queryUrl;

    public Object getQueryClass() {
        return queryClass;
    }

    public void setQueryClass(Object queryClass) {
        this.queryClass = queryClass;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        if (num <= 0) {
            this.num = 1;
        } else {
            this.num = num;
        }
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public long getRowCount() {
        return rowCount;
    }

    public void setRowCount(long rowCount) {
        this.rowCount = rowCount;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getStartRow() {
        return startRow;
    }

    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }

    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 int getNext() {
        return next;
    }

    public void setNext(int next) {
        this.next = next;
    }

    public int getPrev() {
        return prev;
    }

    public void setPrev(int prev) {
        this.prev = prev;
    }

    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getEnd() {
        return end;
    }

    public void setEnd(int end) {
        this.end = end;
    }

    public int getNumCount() {
        return numCount;
    }

    public void setNumCount(int numCount) {
        this.numCount = numCount;
    }


    public List<String> getShowPages() {
        return showPages;
    }

    public void setShowPages(List<String> showPages) {
        this.showPages = showPages;
    }

    public String getQueryUrl() {
        return queryUrl;
    }

    public void setQueryUrl(String queryUrl) {
        this.queryUrl = queryUrl;
    }

    @SuppressWarnings("rawtypes")
    public List getList() {
        return list;
    }

    @SuppressWarnings("rawtypes")
    public void setList(List list) {
        this.list = list;
    }

    public Pagenation(int size, String str_num, long rowCount) {
        int num = 1;
        if (str_num != null) {
            num = Integer.parseInt(str_num);
        }
        this.num = num;
        this.size = size;
        this.rowCount = rowCount;

        this.pageCount = (int) Math.ceil((double) rowCount / size);
        this.num = Math.min(this.num, pageCount);
        this.num = Math.max(1, this.num);

        this.startRow = (this.num - 1) * size;
        this.last = this.pageCount;
        this.next = Math.min(this.pageCount, this.num + 1);
        this.prev = Math.max(1, this.num - 1);

        // 计算page 控制
        start = Math.max(this.num - numCount / 2, first);
        end = Math.min(start + numCount, last);
        if (end - start < numCount) {
            start = Math.max(end - numCount, 1);
        }
        for(int i = start; i <= end; i++){
            showPages.add(String.valueOf(i));
        }


    }

    public Pagenation(int size, int num, long rowCount) {
        if (num <= 0) {
            num = 1;
        }
        this.num = num;
        this.size = size;
        this.rowCount = rowCount;

        this.pageCount = (int) Math.ceil((double) rowCount / size);
        this.num = Math.min(this.num, pageCount);
        this.num = Math.max(1, this.num);

        this.startRow = (this.num - 1) * size;
        this.last = this.pageCount;
        this.next = Math.min(this.pageCount, this.num + 1);
        this.prev = Math.max(1, this.num - 1);

        // 计算page 控制
        start = Math.max(this.num - numCount / 2, first);
        end = Math.min(start + numCount, last);
        if (end - start < numCount) {
            start = Math.max(end - numCount, 1);
        }
        for(int i = start; i <= end; i++){
            showPages.add(String.valueOf(i));
        }

    }

    public Pagenation() {
    }
    public static void main(String[] args) {
        Pagenation pagenation = new Pagenation(10, 1, 102); 
        System.out.println(111);
    }

}
  • 实现层serviceImpl
@Transactional
    public Pagenation listCustDataRaw(PageEntity pageEntity) {
        //算出所需数据的总条数
        int cout = custDataRawDAO.listCustDataRawCount(pageEntity);
        //通过(当前页、每页显示条数、总条数) 初始化分页信息
        Pagenation pagenation = new Pagenation(pageEntity.getPageSize(), pageEntity.getPageNum(), cout);
        //通过上步骤算出要查询的 开始条数,边set 到分页入参实体类中。
        pageEntity.setStartRow(pagenation.getStartRow()); 
        //在查询 list 的时候,让传入的startRow 和 pageSize 作为limit 条件,添加至 sql。
        pagenation.setList(custDataRawDAO.listCustDataRaw(pageEntity)); 
        return pagenation;
    }
  • 显示曾page.jsp
<div class="container" id="pagenation" align="center">
            <div class="pagination" >
                <c:if test="${pagenation.pageCount >1}">
                        <a href="${pagenation.queryUrl }&pageNum=${pagenation.prev }">上一页</a>
                </c:if>
                <c:forEach  items="${pagenation.showPages}" var="showPages">
                        <a href="${pagenation.queryUrl }&pageNum=${showPages }">${showPages }</a>
                </c:forEach>


                <c:if test="${pagenation.pageCount >1 }">
                        <a href="${pagenation.queryUrl }&pageNum=${pagenation.next }">下一页</a>
                </c:if>
            </div>
</div>
  • 效果图

- 这里写图片描述

希望对大家有帮助。谢谢

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值