SpringMVC框架下實現分頁功能


1、創建實體類Page.java

@Entity
public class Page {
    private int totalRecord;// 表示查詢后一共得到多少條結果記錄
    private int pageSize; // 表示頁面一次要顯示多少條記錄
    private int totalPage;// 表示將所有的記錄進行分頁后,一共有多少頁
    private int startIndex;// 表示從所有的結果記錄中的哪一個編號開始分頁查詢
    private int currentPage; // 表示用戶想看的頁數

    @SuppressWarnings("unchecked")
    private List list =null;// list集合是用來裝載一個頁面中的所有記錄的

    public Page(int pageNum, int totalRecord) {
        this.currentPage = pageNum;
        this.totalRecord = totalRecord;

        this.pageSize = 5;// 設置一頁默認顯示10條查詢記錄
        this.startIndex = (this.currentPage - 1) * this.pageSize;// 至於為什么this.page要減1,
        // 是因為mysql數據庫對於分頁查詢時,得到的所有的查詢記錄,第一條記錄的編號是從0開始。
        if (this.totalRecord % this.pageSize == 0) {
            this.totalPage = this.totalRecord / this.pageSize;
        } else {
            this.totalPage = this.totalRecord / this.pageSize + 1;
        }

    }

   //****此處省略了set和get方法****//
}

2、創建Dao層實現類PageDaoImpl.java

@Repository
public class PageDaoImpl implements PageDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    /* 
     * 獲得總記錄數
     */
    @SuppressWarnings("deprecation")
    public int getTotalRecord(String sql, Object... arrayParameters) {
        int totalRecord = jdbcTemplate.queryForInt(sql, arrayParameters);
        return totalRecord;
    }

    /* 
     * 獲取當前頁數據
     */
    @SuppressWarnings("unchecked")
    public Page getPage(int pageNum, Class clazz, String sql, int totalRecord, Object... parameters) {
        Page page = new Page(pageNum, totalRecord);
        sql = sql+" limit "+page.getStartIndex()+","+page.getPageSize();
        List list=jdbcTemplate.query(sql, parameters, ParameterizedBeanPropertyRowMapper.newInstance(clazz));    
        page.setList(list);
        return page;
    }
}

3、在服務層實現類中添加代碼

    public Page getClassifyPage(int pageNum) {
        String sql = "select count(*) from t_classify";
        int totalRecord = pageDao.getTotalRecord(sql);
        sql = "select * from t_classify";
        Page page = pageDao.getPage(pageNum, Classify.class, sql, totalRecord);
        return page;
    }

4、在控制層中添加代碼

    @RequestMapping("/list")
    public String list(HttpServletRequest request) {
        String pageNum=request.getParameter("p")==null?"1":request.getParameter("p");//獲取頁碼,默認1
        request.setAttribute("page", classifyService.getClassifyPage(Integer.valueOf(pageNum)));return "admin/classify/list";
    }

5、在jsp頁面中布局

內容部分:

<c:forEach var="classify" items="${page.list}" varStatus="s">
  <tr class="column_${s.count}">
       <td class="list-text color999">${classify.name}</td>
       <td class="list-text color999">${classify.id}</td>
</tr> </c:forEach>

分頁按鈕部分:

       頁次:${page.currentPage}/${page.totalPage}&nbsp;每頁${page.pageSize}&nbsp;總數${page.totalRecord}&nbsp;&nbsp;&nbsp;&nbsp;
  <a href="<c:url value='/admin/user/list.htm?p=1'/>">首頁</a>
    <c:choose>  
           <c:when test="${page.currentPage>1}">
               <a href="<c:url value='/admin/classify/list.htm?p=${page.currentPage-1}'/>">上一頁</a>
           </c:when>  
           <c:otherwise>
                   <a href="#">上一頁</a>
           </c:otherwise>  
    </c:choose>
    <%--
    &nbsp;&nbsp;
    <c:forEach var="i" begin="1" end="${page.totalPage}">
       <a href="<c:url value='/classify.htm?c=${page.list[0].classifyid}&p=${i}'/>">${i}</a>
    </c:forEach>
    --%> <c:choose> <c:when test="${page.currentPage<page.totalPage}"> <a href="<c:url value='/admin/classify/list.htm?p=${page.currentPage+1}'/>">下一頁</a> </c:when> <c:otherwise> <a href="#">下一頁</a> </c:otherwise> </c:choose>

 

打賞

免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2021 CODEPRJ.COM