JavaWeb+MySql分頁封裝

前段時間由於須要因此寫一個JavaWeb+MySql的分頁封裝類,附上代碼。技術有限寫得很差請多多指教。javascript

1.首先貼上Eneity類java

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。注意一下這裏只是部分代碼,相信貼出這段代碼你就知道如何作sql

@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>

 

最後這裏貼上效果圖:jsp

圖1ide

圖2工具

相關文章
相關標籤/搜索