paginate(int pageNumber, int pageSize, String select, String sqlExceptSelect, Object... paras)javascript
其中的參數含義分別爲:當前頁的頁號、每頁數據條數、sql語句的select部分、sql語句除了select之外的部分、 查詢參數。
JFinal官方文檔:http://www.jfinal.com/doc/5-6css
首先,paginate會將select以及sqlExcepSelect整合造成一個sql語句(select * from blog where id < ?),佔位符的值則是第五個參數paras的值。pageNumber以及pageSize則是當前頁的頁數以及每頁數據的條數。html
首先,咱們先從前端頁面獲取一個pageNumber,這是當前頁碼數。而後對該頁碼數進行處理,若頁碼數爲null,則顯示第一頁信息。前端
(注:Jfinal中的render(String) 方法只支持某一種視圖層,默認是支持Freemarker。若但願同時支持JSP,則可以使用renserJSP(String) 去返回一個Jsp頁面)java
/** * 分頁查詢 */ public void paginate(){ Integer pageNumber=getParaToInt("pageNumber"); if(pageNumber==null){ pageNumber=1; } Page<Blog> page= Blog.dao.paginate(pageNumber,5,"select *","from blog"); setAttr("blogPage",page); renderJsp("Page.jsp"); }
(1)在獲取後臺傳遞過來的數據的時候,咱們要注意由於在控制器中,咱們調用分頁方法paginate()後,返回的是一個Page<T>對象,查看Page<T>的源碼的時候,Page<T>包含四個屬性:分頁返回結果的list集合,當前頁碼數,每一頁的數據條數,總的分頁數,總的行數。jquery
在jsp頁面中,獲取查詢到的數據結果:sql
(2)分頁組件的實現:bootstrap
(3)Page.jsp頁面的完整代碼:jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.io.IOException" %> <html th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Document</title> <mate naem="Viewport" content="width=drive-width, user-scalable=no,initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0"></mate> <link rel="stylesheet" href="/bootstrap/css/bootstrap.css"> </head> <body> <script type="text/javascript" src="/bootstrap/js/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script> <ul class="nav nav-pills"> <li role="presentation" class="active"><a href="/blog/queryAllBlog">Home</a></li> <li role="presentation"><a href="/blog/addBlog.html">AddBlog</a></li> <li role="presentation"><a href="#">Messages</a></li> </ul> <div> </div> <div class="container"> <table class="table table-hover"> <tr> <th>id</th> <th>標題</th> <th>內容</th> <th>類型</th> <th>操做</th> </tr> <c:forEach items="${blogPage.list}" var="blog" > <tr> <td>${blog.id}</td> <td>${blog.title}</td> <td>${blog.content}</td> <td>${blog.category}</td> <td> <a href="/blog/pageDelete/${blog.id}">刪除</a> </td> </tr> </c:forEach> </table> <div class="page pull-right"> <nav aria-label="Page navigation"> <ul class="pagination"> <li><a href="/blog/paginate?pageNumber=${blogPage.pageNumber>1?blogPage.pageNumber-1:1}">上一頁</a></li> <c:forEach begin="1" end="${blogPage.totalPage}" varStatus="page"> <c:choose> <c:when test="${blogPage.pageNumber==page.index}"> <li class="active"><a href="/blog/paginate?pageNumber=${page.index}">${page.index}</a></li> </c:when> <c:otherwise> <li><a href="/blog/paginate?pageNumber=${page.index}">${page.index}</a></li> </c:otherwise> </c:choose> </c:forEach> <li><a href="/blog/paginate?pageNumber=${blogPage.pageNumber<blogPage.totalPage?blogPage.pageNumber+1:blogPage.totalPage}">下一頁</a></li> </ul> </nav> </div> </div> </body> </html>
最後,咱們運行項目,並查看一下結果:spa
點擊第一頁時,會向後臺傳遞pageNumber爲1的值:
點擊第二頁時,pageNumber的值變成了2:
完成這些步驟後,咱們的分頁查詢功能已實現了