您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在Spring MVC中使用MyBatis與MySQL實現一個分頁功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
方法如下:
首先寫一個分頁的工具類,定義當前頁數,總頁數,每頁顯示多少等屬性。
/** * 分頁 工具類 */ public class Page implements Serializable { private static final long serialVersionUID = -2213069645383858323L; private int pageNow = 1; // 當前頁數 private int pageSize = 4; // 每頁顯示記錄的條數 private int totalCount; // 總的記錄條數 private int totalPageCount; // 總的頁數 private int startPos; // 開始位置,從0開始 private boolean hasFirst;// 是否有首頁 private boolean hasPre;// 是否有前一頁 private boolean hasNext;// 是否有下一頁 private boolean hasLast;// 是否有最后一頁 /** * 通過構造函數 傳入 總記錄數 和 當前頁 * @param totalCount * @param pageNow */ public Page(int totalCount, int pageNow) { this.totalCount = totalCount; this.pageNow = pageNow; } /** * 取得總頁數,總頁數=總記錄數/總頁數 * @return */ public int getTotalPageCount() { totalPageCount = getTotalCount() / getPageSize(); return (totalCount % pageSize == 0) ? totalPageCount : totalPageCount + 1; } public void setTotalPageCount(int totalPageCount) { this.totalPageCount = totalPageCount; } public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } /** * 取得選擇記錄的初始位置 * @return */ public int getStartPos() { return (pageNow - 1) * pageSize; } public void setStartPos(int startPos) { this.startPos = startPos; } /** * 是否是第一頁 * @return */ public boolean isHasFirst() { return (pageNow == 1) ? false : true; } public void setHasFirst(boolean hasFirst) { this.hasFirst = hasFirst; } /** * 是否有首頁 * @return */ public boolean isHasPre() { // 如果有首頁就有前一頁,因為有首頁就不是第一頁 return isHasFirst() ? true : false; } public void setHasPre(boolean hasPre) { this.hasPre = hasPre; } /** * 是否有下一頁 * @return */ public boolean isHasNext() { // 如果有尾頁就有下一頁,因為有尾頁表明不是最后一頁 return isHasLast() ? true : false; } public void setHasNext(boolean hasNext) { this.hasNext = hasNext; } /** * 是否有尾頁 * @return */ public boolean isHasLast() { // 如果不是最后一頁就有尾頁 return (pageNow == getTotalCount()) ? false : true; } public void setHasLast(boolean hasLast) { this.hasLast = hasLast; } }
接著Mapper接口中定義分類的方法
傳入兩個參數,分別是開始頁和每頁顯示記錄的條數。
Mapper的映射文件中的SQL分頁語句
<select id="findPages" resultType="com.dh25.pojo.Goods"> select g.id,g.name,g.price,g.num,c.class_name,g.pic,g.des from tb_goods g,tb_class c where g.class_id=c.cid limit #{startPos},#{pageSize} </select>
接著在控制類(Controller)中查詢商品,同時進行分頁。
查詢商品方法
/** * 查詢商品信息,實現分頁 * @param goods * @return * @throws Exception */ @RequestMapping("/queryPages") public String queryPages(HttpServletRequest request, Model model) throws Exception { String pageNow = request.getParameter("pageNow"); Page page = null; List<Goods> goods = new ArrayList<Goods>(); int totalCount = (int) service.getGoodsCount(1); if (pageNow != null) { page = new Page(totalCount, Integer.parseInt(pageNow)); goods = this.service.findPages(page.getStartPos(), page.getPageSize()); } else { page = new Page(totalCount, 1); goods = this.service.findPages(page.getStartPos(), page.getPageSize()); } model.addAttribute("goods_list", goods); model.addAttribute("page", page); return "goods/FenYeTest"; }
這里需要注意一下,遍歷商品時沒有點擊頁數,所以當前頁默認是空的,這里要在方法里面進行判斷,如果pageNow為空,傳一個1到構造函數,否則會報空指針。
最后,在jsp頁面顯示查詢的商品列表,同時實現點擊上一頁,下一頁,首頁,尾頁等常見分頁中的操作
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>商品查詢列表</title> </head> <body> <table width="100%" border=1> <tr> <td>選擇</td> <td>商品名稱</td> <td>商品價格</td> <td>生產數量</td> <td>商品類別</td> <td>商品圖片</td> <td>商品信息</td> <td>操作</td> </tr> <c:forEach items="${goods_list }" var="item"> <tr> <td>${item.id}<input type="hidden" name="id" value="${item.id}" /></td> <td>${item.name }</td> <td>${item.price }</td> <td>${item.num }</td> <td>${item.classInfo.class_name }</td> <td><img alt="商品圖片" src="http://localhost/pic/${item.pic }"></td> <td>${item.des }</td> <td> <a href="${pageContext.request.contextPath }/findGoodsById.action?id=${item.id}" rel="external nofollow" >修改</a> <a href="${pageContext.request.contextPath }/delGoods.action?id=${item.id}" rel="external nofollow" >刪除</a> </td> </tr> </c:forEach> </table> <div align="center"> <font size="2">第 ${page.pageNow} 頁</font> <a href="queryPages.action?pageNow=1" rel="external nofollow" rel="external nofollow" >首頁</a> <c:choose> <c:when test="${page.pageNow - 1 > 0}"> <a href="queryPages.action?pageNow=${page.pageNow - 1}" rel="external nofollow" >上一頁</a> </c:when> <c:when test="${page.pageNow - 1 <= 0}"> <a href="queryPages.action?pageNow=1" rel="external nofollow" rel="external nofollow" >上一頁</a> </c:when> </c:choose> <c:choose> <c:when test="${page.totalPageCount==0}"> <a href="queryPages.action?pageNow=${page.pageNow}" rel="external nofollow" rel="external nofollow" >下一頁</a> </c:when> <c:when test="${page.pageNow + 1 < page.totalPageCount}"> <a href="queryPages.action?pageNow=${page.pageNow + 1}" rel="external nofollow" >下一頁</a> </c:when> <c:when test="${page.pageNow + 1 >= page.totalPageCount}"> <a href="queryPages.action?pageNow=${page.totalPageCount}" rel="external nofollow" rel="external nofollow" >下一頁</a> </c:when> </c:choose> <c:choose> <c:when test="${page.totalPageCount==0}"> <a href="queryPages.action?pageNow=${page.pageNow}" rel="external nofollow" rel="external nofollow" >尾頁</a> </c:when> <c:otherwise> <a href="queryPages.action?pageNow=${page.totalPageCount}" rel="external nofollow" rel="external nofollow" >尾頁</a> </c:otherwise> </c:choose> </div> </body> </html>
關于如何在Spring MVC中使用MyBatis與MySQL實現一個分頁功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。