PageHelper分頁插件的使用

你們好!今天寫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

做者:何秀好

相關文章
相關標籤/搜索