最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring MVC+MyBatis+MySQL實(shí)現(xiàn)分頁功能實(shí)例

 更新時(shí)間:2017年06月23日 09:54:40   作者:阿木俠  
分頁功能是我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的,下面這篇文章主要給大家介紹了Spring MVC+MyBatis+MySQL實(shí)現(xiàn)分頁功能的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。

前言

最近因?yàn)楣ぷ鞯脑颍谑褂肧SM框架實(shí)現(xiàn)一個(gè)商品信息展示的功能,商品的數(shù)據(jù)較多,不免用到分頁,查了一番MyBatis分頁的做法,終于是實(shí)現(xiàn)了,在這里記錄下來分享給大家,下面來一起看看詳細(xì)的介紹:

方法如下: 

首先寫一個(gè)分頁的工具類,定義當(dāng)前頁數(shù),總頁數(shù),每頁顯示多少等屬性。

/** 
 * 分頁 工具類 
 */ 
public class Page implements Serializable { 
 private static final long serialVersionUID = -2213069645383858323L; 
 private int pageNow = 1; // 當(dāng)前頁數(shù) 
 private int pageSize = 4; // 每頁顯示記錄的條數(shù) 
 private int totalCount; // 總的記錄條數(shù) 
 private int totalPageCount; // 總的頁數(shù) 
 private int startPos; // 開始位置,從0開始 
 private boolean hasFirst;// 是否有首頁 
 private boolean hasPre;// 是否有前一頁 
 private boolean hasNext;// 是否有下一頁 
 private boolean hasLast;// 是否有最后一頁 
 /** 
  * 通過構(gòu)造函數(shù) 傳入 總記錄數(shù) 和 當(dāng)前頁 
  * @param totalCount 
  * @param pageNow 
  */ 
 public Page(int totalCount, int pageNow) { 
  this.totalCount = totalCount; 
  this.pageNow = pageNow; 
 } 
 /** 
  * 取得總頁數(shù),總頁數(shù)=總記錄數(shù)/總頁數(shù) 
  * @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() { 
  // 如果有首頁就有前一頁,因?yàn)橛惺醉摼筒皇堑谝豁?
  return isHasFirst() ? true : false; 
 } 
 public void setHasPre(boolean hasPre) { 
  this.hasPre = hasPre; 
 } 
 /** 
  * 是否有下一頁 
  * @return 
  */ 
 public boolean isHasNext() { 
  // 如果有尾頁就有下一頁,因?yàn)橛形岔摫砻鞑皇亲詈笠豁?
  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接口中定義分類的方法


傳入兩個(gè)參數(shù),分別是開始頁和每頁顯示記錄的條數(shù)。 

Mapper的映射文件中的SQL分頁語句

<select id="findPages" resultType="com.dh15.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)中查詢商品,同時(shí)進(jìn)行分頁。

查詢商品方法

/** 
  * 查詢商品信息,實(shí)現(xiàn)分頁 
  * @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"; 
 } 

這里需要注意一下,遍歷商品時(shí)沒有點(diǎn)擊頁數(shù),所以當(dāng)前頁默認(rèn)是空的,這里要在方法里面進(jìn)行判斷,如果pageNow為空,傳一個(gè)1到構(gòu)造函數(shù),否則會(huì)報(bào)空指針。

最后,在jsp頁面顯示查詢的商品列表,同時(shí)實(shí)現(xiàn)點(diǎn)擊上一頁,下一頁,首頁,尾頁等常見分頁中的操作

<%@ 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>商品價(jià)格</td> 
   <td>生產(chǎn)數(shù)量</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 style="width:110px;height:120px" 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> 

最終效果圖:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 字符編碼的處理和BeanUtils組件使用詳解

    字符編碼的處理和BeanUtils組件使用詳解

    這篇文章主要為大家介紹了字符編碼的處理和BeanUtils組件的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 使用JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式

    使用JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式

    這篇文章主要介紹了依靠JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • JAVA發(fā)送HTTP請求的多種方式詳細(xì)總結(jié)

    JAVA發(fā)送HTTP請求的多種方式詳細(xì)總結(jié)

    目前做項(xiàng)目中有一個(gè)需求是這樣的,需要通過Java發(fā)送url請求,查看該url是否有效,這時(shí)我們可以通過獲取狀態(tài)碼來判斷,下面這篇文章主要給大家介紹了關(guān)于JAVA發(fā)送HTTP請求的多種方式總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Java設(shè)計(jì)模式之組合模式(Composite模式)介紹

    Java設(shè)計(jì)模式之組合模式(Composite模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之組合模式(Composite模式)介紹,Composite定義:將對(duì)象以樹形結(jié)構(gòu)組織起來,以達(dá)成“部分-整體” 的層次結(jié)構(gòu),使得客戶端對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性,需要的朋友可以參考下
    2015-03-03
  • java獲取用戶輸入的字符串方法

    java獲取用戶輸入的字符串方法

    今天小編就為大家分享一篇java獲取用戶輸入的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Junit Mockito實(shí)現(xiàn)單元測試方法介紹

    Junit Mockito實(shí)現(xiàn)單元測試方法介紹

    JUnit是用于編寫和運(yùn)行可重復(fù)的自動(dòng)化測試開源測試項(xiàng)目框架,這樣可以保證我們的代碼按與其工作。JUnit可廣泛用于工業(yè)和作為支架(從命令行)或IDE(如IDE)內(nèi)單獨(dú)的java程序
    2022-09-09
  • 一文秒懂Java中的樂觀鎖 VS 悲觀鎖

    一文秒懂Java中的樂觀鎖 VS 悲觀鎖

    這篇文章主要介紹了java樂觀鎖 VS 悲觀鎖的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-05-05
  • Java程序員必須知道的5個(gè)JVM命令行標(biāo)志

    Java程序員必須知道的5個(gè)JVM命令行標(biāo)志

    這篇文章主要介紹了每個(gè)Java程序員必須知道的5個(gè)JVM命令行標(biāo)志,需要的朋友可以參考下
    2015-03-03
  • Java實(shí)現(xiàn)Floyd算法的示例代碼

    Java實(shí)現(xiàn)Floyd算法的示例代碼

    Floyd算法又稱為插點(diǎn)法,是一種利用動(dòng)態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點(diǎn)之間最短路徑的算法。本文將用Java語言實(shí)現(xiàn)Floyd算法,需要的可以參考一下
    2022-07-07
  • java不可逆加密算法之md5加密算法使用示例

    java不可逆加密算法之md5加密算法使用示例

    MD5的全稱是Message-Digest Algorithm 5,他是一個(gè)不可逆的字符串加密算法,下面使用示例說明他的用法
    2014-01-01

最新評(píng)論

家居| 永安市| 金湖县| 潮安县| 萨迦县| 道真| 思南县| 翁源县| 集安市| 阳西县| 苍溪县| 锦州市| 南雄市| 尼木县| 漯河市| 北海市| 洛隆县| 金塔县| 高台县| 延安市| 二连浩特市| 沁阳市| 瓮安县| 赫章县| 孝感市| 昌乐县| 永和县| 仁布县| 颍上县| 曲阜市| 铜陵市| 兴和县| 昭苏县| 东阳市| 杭锦旗| 东莞市| 南通市| 台江县| 缙云县| 谢通门县| 唐河县|