zoukankan      html  css  js  c++  java
  • PageHelper分页插件的使用

    大家好!今天写ssm项目实现分页的时候用到pageHelper分页插件,在使用过程中出现了一些错误,因此写篇随笔记录下整个过程

    1.背景:在项目的开发的过程中,为了实现所有的功能。

    2.目标:实现分页操作

    3.出现问题:分页不成功

    4.过程

      1.当点击按钮的时候,发起查询请求同时带有两个参数(page=1,size=4,size代表显示的当前多少页page代表当前第几页)href="${pageContext.request.contextPath}/orders/findAll.do?page=1&size=4"> <iclass="fa fa-circle-o"></i> 订单管理

      2.发起请求后到Controller层接收前端页面传过来的数据1,和4,@RequestParam(name = "page",required = true,defaultValue = "1")int page,@RequestParam(name = "size",required = true,defaultValue = "4")int size)

      3.调用findAll(page.size)方法去数据库里面查询所有的数据

      4.在service层使用PageHelper.startPage(page,size);就可以实现分页

      5.然后在controller把返回来的值放到PageInfo对象里面

      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

    作者:何秀好

  • 相关阅读:
    angularjs中的jqlite的认识理解及操作使用
    轻谈Normalize.css
    oppo R9 WLAN使用代理图解
    前端小炒的win7使用笔记(收藏篇)
    git操作方便,简单使用的客户端sourcetree 安装配置所遇问题总结
    关于js中对事件绑定与普通事件的理解
    IT最新最火的网络词汇*2*(文章来源电商)
    Git笔记之初识vi编辑器
    番茄钟工作法--我们天生爱分享
    探讨"点"语法的奥秘
  • 原文地址:https://www.cnblogs.com/itboxue/p/10603947.html
Copyright © 2011-2022 走看看