JavaWeb+MySql分页封装

前段时间因为需要所以写一个JavaWeb+MySql的分页封装类,附上代码。技术有限写得不好请多多指教。

1.首先贴上Eneity类

package com.zx.pageUtil;

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

/**
 * <b> 分页工具类 </b>
 * @author zhangxiang
 * 
 */
public class Pager implements Serializable {
    private static final long serialVersionUID = 4542617637761955078L;

    /**
     * currentPage 当前页
     */
    private int currentPage = 1;
    /**
     * pageSize 每页大小
     */
    private int pageSize = 5;
    /**
     * pageTotal 总页数
     */
    private int pageTotal;
    /**
     * recordTotal 总条数
     */
    private int recordTotal = 0;
    /**
     * previousPage 前一页
     */
    private int previousPage;
    /**
     * nextPage 下一页
     */
    private int nextPage;
    /**
     * firstPage 第一页
     */
    private int firstPage = 1;
    /**
     * lastPage 最后一页
     */
    private int lastPage;
    /**
     * 页号式导航, 起始页号
     */
    private int startPage;
    /**
     * 页号式导航, 结束页号
     */
    private int endPage;
    /**
     * 页号式导航, 最多显示页号数量为numCount+1;这里显示11页。
     */
    private int numCount = 10;
    /**
     * 要显示的页号
     */
    public List<Integer> showPagesNum = new ArrayList<Integer>();
    
    // 以下set方式是需要赋值的 不需要全部生成set 
    /**
     * 设置当前页 <br>
     * @param currentPage
     */
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    /**
     * 设置每页大小,也可以不用赋值,默认大小为10条 <br>
     * @param pageSize
     */
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    /**
     * 设置总条数,默认为0 <br>
     * @param recordTotal
     */
    public void setRecordTotal(int recordTotal) {
        this.recordTotal = recordTotal;
        otherAttr();
    }

    /**
     * 设置其他参数
     */
    public void otherAttr() {
        // 总页数
        this.pageTotal = this.recordTotal % this.pageSize > 0 ? this.recordTotal / this.pageSize + 1 : this.recordTotal / this.pageSize;
        // 第一页
        this.firstPage = 1;
        // 最后一页
        this.lastPage = this.pageTotal;
        // 前一页
        if (this.currentPage > 1) {
            this.previousPage = this.currentPage - 1;
        } else {
            this.previousPage = this.firstPage;
        }
        // 下一页
        if (this.currentPage < this.lastPage) {
            this.nextPage = this.currentPage + 1;
        } else {
            this.nextPage = this.lastPage;
        }
        
        // 计算page 控制
        /**
             计算数字翻页起始数字从哪一个开始 ,因为我们默认的是需要显示10个翻页数字(加上本页等于11页)
             startPage是起始翻页数字,所以需要个根据本页向前显示5个翻页数字   例如本页是 6   那么就是  1  2  3  4  5  6(本页)
             同时需要判断是不是第一页,第一页不需要向前显示翻页数字。
             this.currentPage - numCount / 2  只要本页不大于6  它的数字翻页始终从1开始,7就从2开始  8就从3开始  以此类推
         */
        startPage = Math.max(this.currentPage - numCount / 2, firstPage);
        endPage = Math.min(startPage + numCount, lastPage);
        /**
            查看所有的数字翻页是否大于设置的默认数字翻页个数
            如果不大于 那就说明总的页数小于默认设置要显示的数字翻页的个数或者等于
             那么就从第1页的数字翻页开始显示 一直到总的页数
         */
        if (endPage - startPage < numCount) {
            startPage = Math.max(endPage - numCount, 1);
        }
        /**
             编写数字翻页集合利于页面迭代取出相应的数字翻页。
         */
        for(int i = startPage; i <= endPage; i++){
            showPagesNum.add(i);
        }
    }

    // 放开私有属性
    public int getCurrentPage() {
        return currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getPageTotal() {
        return pageTotal;
    }

    public int getRecordTotal() {
        return recordTotal;
    }

    public int getPreviousPage() {
        return previousPage;
    }

    public int getNextPage() {
        return nextPage;
    }

    public int getFirstPage() {
        return firstPage;
    }

    public int getLastPage() {
        return lastPage;
    }

    public int getStartPage() {
        return startPage;
    }

    public int getEndPage() {
        return endPage;
    }

    public int getNumCount() {
        return numCount;
    }

    public List<Integer> getShowPagesNum() {
        return showPagesNum;
    }

    @Override
    public String toString() {
        return "Pager [currentPage=" + currentPage + ", pageSize=" + pageSize
                + ", pageTotal=" + pageTotal + ", recordTotal=" + recordTotal
                + ", previousPage=" + previousPage + ", nextPage=" + nextPage
                + ", firstPage=" + firstPage + ", lastPage=" + lastPage
                + ", startPage=" + startPage + ", endPage=" + endPage + "]"; 
    }
}

2.与数据库交互代码,我这边用的是Spring JDBC。注意一下这里只是部分代码,相信贴出这段代码你就知道如何做

@Override
public List<User> getUserList(Pager pager) {
    String sql = "select * from user limit ?,?  ";
    this.getJdbcTemplate().query(sql,new Object[] {(pager.getCurrentPage()*pager.getPageSize()-pager.getPageSize()),pager.getPageSize()});
    return null;
}

3.jsp代码选择翻页导航代码,由于样式中含有背景图,所以没有办法给到

<div class="member-pages clearfix">
    <div class="fr pc-search-g" >
        <c:if test="${pager.currentPage >1 }">
            <a href="addressView?currentPage=${pager.previousPage }" class="pc-search-n" >上一页</a>
        </c:if>
        <c:forEach  items="${pager.showPagesNum}" var="showPages">
            <a href="addressView?currentPage=${showPages }" <c:if test="${pager.currentPage ==  showPages}">class="current"</c:if>>${showPages }</a>
        </c:forEach>
        <c:if test="${pager.currentPage < pager.pageTotal }">
            <span class="pc-search-di"></span>
            <a href="addressView?currentPage=${pager.nextPage }" class="pc-search-n" >下一页</a>
        </c:if>
        <form action="addressView" id="subform" method="post" style="display:inline;">
            <span class="pc-search-y">
                <em>  共${pager.pageTotal }页    到第</em>
                <input type="text" name="currentPage" placeholder="${pager.currentPage }" class="pc-search-j">
                <em></em>
                <a class="confirm" href="javascript:;" onclick="document.getElementById('subform').submit();return false">确定</a>
            </span>
        </form>
    </div>
</div>

 

最后这里贴上效果图:

图1

图2

 

posted @ 2017-09-13 19:50  Faith_zhang  阅读(2572)  评论(0编辑  收藏  举报