你們好!今天寫ssm項目實現分頁的時候用到pageHelper分頁插件,在使用過程當中出現了一些錯誤,所以寫篇隨筆記錄下整個過程前端
1.背景:在項目的開發的過程當中,爲了實現全部的功能。java
2.目標:實現分頁操做git
3.出現問題:分頁不成功github
4.過程web
1.當點擊按鈕的時候,發起查詢請求同時帶有兩個參數(page=1,size=4,size表明顯示的當前多少頁page表明當前第幾頁)href="${pageContext.request.contextPath}/orders/findAll.do?page=1&size=4"> <iclass="fa fa-circle-o"></i> 訂單管理spring
2.發起請求後到Controller層接收前端頁面傳過來的數據1,和4,@RequestParam(name = "page",required = true,defaultValue = "1")int page,@RequestParam(name = "size",required = true,defaultValue = "4")int size)sql
3.調用findAll(page.size)方法去數據庫裏面查詢全部的數據數據庫
4.在service層使用PageHelper.startPage(page,size);就能夠實現分頁緩存
5.而後在controller把返回來的值放到PageInfo對象裏面mybatis
6同時用modelAndView.放到域中發到頁面去,跳轉邏輯視圖
7.前端頁面上顯示使用循環把分頁的數據顯示,
8.分頁也就是再發一次請求,同時用EL表達式帶參數去查詢(相關的代碼在尾部會貼出來)
5.解決方案
1.本次的操做分頁不成功主要在忘記在mybaitis配製文件中配置pageHelper的相關信息如圖
<!-- 把交給IOC管理 SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 傳入PageHelper的插件 --> <property name="plugins"> <array> <!-- 傳入插件的對象 --> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <prop key="helperDialect">oracle</prop> <prop key="reasonable">true</prop> </props> </property> </bean> </array> </property> </bean>
2.同時要注意要在pom.xml中加入依賴
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
6.總結
1.代碼不難考慮要全面。
2.記住時時清理緩存
3.必要時候能夠重啓環境(比較麻煩不建議)
4.不要浮躁,耐心檢查錯誤
7.相關代碼
1.前端顯示代碼
<c:forEach items="${pageInfo.list}" var="orders"> <tr> <td><input name="ids" type="checkbox"></td> <td>${orders.id }</td> <td>${orders.orderNum }</td> <td>${orders.product.productName }</td> <td>${orders.product.productPrice }</td> <td>${orders.orderTimeStr }</td> <td class="text-center">${orders.orderStatusStr }</td> <td class="text-center"> <button type="button" class="btn bg-olive btn-xs">訂單</button> <button type="button" class="btn bg-olive btn-xs" onclick="location.href='${pageContext.request.contextPath}/orders/findById.do?id=${orders.id}'">詳情</button> <button type="button" class="btn bg-olive btn-xs">編輯</button> </td> </tr> </c:forEach>
2.前端分頁代碼
<div class="box-tools pull-right"> <ul class="pagination"> <li> <a href="${pageContext.request.contextPath}/orders/findAll.do?page=1&size=${pageInfo.pageSize}" aria-label="Previous">首頁</a> </li> <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum-1}&size=${pageInfo.pageSize}">上一頁</a></li> <c:forEach begin="1" end="${pageInfo.pages}" var="pageNum"> <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageNum}&size=${pageInfo.pageSize}">${pageNum}</a></li> </c:forEach> <li><a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pageNum+1}&size=${pageInfo.pageSize}">下一頁</a></li> <li> <a href="${pageContext.request.contextPath}/orders/findAll.do?page=${pageInfo.pages}&size=${pageInfo.pageSize}" aria-label="Next">尾頁</a> </li> </ul> </div> </div>
3.controller層代碼
package com.busc.ssm.controller; import com.github.pagehelper.PageInfo; import com.itheima.ssm.domain.Orders; import com.itheima.ssm.service.OrdersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import java.util.List; @Controller @RequestMapping("/orders") public class OrdersController { @Autowired private OrdersService ordersService; //未分頁的訂單查詢 /*@RequestMapping("/findAll.do") public ModelAndView findAll()throws Exception{ ModelAndView mv = new ModelAndView(); List<Orders>ordersList=ordersService.findAll(); mv.addObject("ordersList",ordersList); mv.setViewName("orders-list");//轉到邏輯視圖 return mv; }*/ @RequestMapping("/findAll.do") public ModelAndView findAll(@RequestParam(name = "page",required = true,defaultValue = "1")int page,@RequestParam( name = "size",required = true,defaultValue = "4" )int size)throws Exception{ ModelAndView mv = new ModelAndView(); List<Orders>ordersList=ordersService.findAll(page,size); PageInfo pageInfo = new PageInfo(ordersList); mv.addObject("pageInfo",pageInfo); mv.setViewName("orders-page-list"); return mv; } }
4.service代碼
package com.busc.ssm.service.impl; import com.github.pagehelper.PageHelper; import com.busc.ssm.dao.OrdersDao; import com.busc.ssm.domain.Orders; import com.busc.ssm.service.OrdersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional//事務 public class OrdersServiceImpl implements OrdersService { //注入dao層 @Autowired private OrdersDao ordersDao; /*分頁操做*/ @Override public List<Orders> findAll(int page,int size) throws Exception { PageHelper.startPage(page,size); return ordersDao.findAll(); } //未分頁 /*@Override public List<Orders> findAll() throws Exception { return ordersDao.findAll(); }*/ }
2019-03-2621:33:09
做者:何秀好