zoukankan      html  css  js  c++  java
  • 分页查询 pageHelper

    一.配置mybaits的PageHelper插件有两种方式:

    先引入pageHelper插件

        <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.1.2</version>
           </dependency>

      1.SSM整合中 mybaits配置已经集成到了spring的配置文件中,所以配置SpringSessionFactory时候可以指定插件:

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--mybatis的其他配置 -->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <!-- 分页的相关配置参数 详细参数解析见附录 -->
                            <prop key="helperDialect">oracle</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
     
    2.配置一个mybaits的SqlMapConfig.xml
    <configuration>
        <plugins>
          <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
        </plugins>
    </configuration>
    好处是:不需要指定数据库方言了,mybatis会自动选择;
     
     
    二.PageHelper的API解析
    public PageInfo<Product> findByPageHelper(Integer currPage, Integer pageSize) {
        //开始分页
        PageHelper.startPage(currPage, pageSize);
        //查询全部
        List<Product> productList = productDao.findAll();
        //创建PageInfo对象
        PageInfo<Product> pageInfo = new PageInfo<>(productList, 5);
        return pageInfo;
    }
     
    三.
    pageInfo是PageHelper定义的实体类,成员属性:
    pageInfo.getPageNum():当前页
    pageInfo.getPageSize():每页条数
    pageInfo.getPages():总页数
    pageInfo.getTotal():总条数
    pageInfo.getList():数据
    pageInfo.getPrePage():上一页
    pageInfo.getNextPage():下一页
    pageInfo.isIsFirstPage():是否第一页
    pageInfo.isIsLastPage():是否最后一页
    pageInfo.getNavigateFirstPage():展示的第一个页面
    pageInfo..getNavigateLastPage():展示的最后一个页码
     
    需要注意的是关与select中option子标签的设置
    option有一个属性:selected:
    selected属性:规定在页面加载时预先选定该选项,被预选的选项会显示在下拉列表的最前面的位置,
        也可以在页面加载后通过Js设置selected;
    当selected="selected"或者selected="true"当前的option就会默认在刷新后显示最前面称为select的value值;
    实例:
    <%--默认选中每页条数--%>
    $("#pageSize option[value=${pageInfo.pageSize}]").prop("selected","selected");
    <!--secript 代码-->
    <script type="text/javascript"> // 分页 $("#pageSize option[value=${pageInfo.pageSize}]").prop("selected","selected"); function gotoPage(currPage) { // 获取每页显示条数 var pageSize = $("#pageSize").val(); if(currPage<1){ return; } if(currPage>${pageInfo.pages}){ return; } location.href="${pageContext.request.contextPath}/product/findAll?currPage="+currPage+"&pageSize="+pageSize; }
    </script>
    <div class="box-tools pull-right">
    <ul class="pagination">
    <%--在超链接中访问js函数 必须添加前缀 javascript--%>
    <li><a href="javascript:gotoPage(1)" aria-label="Previous">首页</a></li>
    <li><a href="javascript:gotoPage(${pageInfo.prePage})">上一页</a></li>
    <c:forEach begin="${pageInfo.navigateFirstPage}" end="${pageInfo.navigateLastPage}" var="i">
    <li><a href="javascript:gotoPage(${i})">${i}</a></li>
    </c:forEach>
    <li><a href="javascript:gotoPage(${pageInfo.nextPage})">下一页</a></li>
    <li><a href="javascript:gotoPage(${pageInfo.pages})" aria-label="Next">尾页</a></li>
    </ul>
    </div>

    Controller 层

        //  PageHelper 分页助手查询
         //查询全部 RequestParam   请求参数
        // value   指定页面参数的名称
        // required     是否必要有参数
         @RequestMapping("/findAll")
         public ModelAndView findAll(@RequestParam(value = "currPage",defaultValue = "2") Integer currPage,
                                     @RequestParam(value = "pageSize",required = false,defaultValue = "5") Integer pageSize){
            //  准备数据
             PageInfo<Product> pageInfo= productService.findByPageHelper(currPage,pageSize);
             //  创建ModelAndView 对象
             ModelAndView modelAndView = new ModelAndView();
             // 添加数据
             modelAndView.addObject("pageInfo",pageInfo);
             // 指定页面
             modelAndView.setViewName("product-list");
             return modelAndView;
         }

    servrice 层和serviceImp层

    //根据分页助手查询
    PageInfo<Product> findByPageHelper(Integer currPage,Integer pageSize);

    public PageInfo<Product> findByPageHelper(Integer currPage, Integer pageSize) { //指定分页的参数 PageHelper.startPage(currPage, pageSize); //查询全部 List<Product> productList = productDao.findAll(); //创建PageInfo对象 PageInfo<Product> productPageInfo = new PageInfo<>(productList,3); return productPageInfo; }
  • 相关阅读:
    《人月神话》读后感*part1
    《程序员修炼之道——从小工到专家》阅读笔记*part6
    Java课06
    《程序员修炼之道——从小工到专家》阅读笔记*part5
    《程序员修炼之道——从小工到专家》阅读笔记*part4
    Java课堂测试——输出单个文件中的前N个最常出现的英语单词
    四则运算自动出题系统——网页版
    关于JAVA项目中的常用的异常处理情况
    《程序员修炼之道——从小工到专家》阅读笔记*part3
    《程序员修炼之道——从小工到专家》阅读笔记*part2
  • 原文地址:https://www.cnblogs.com/dragonyl/p/11228182.html
Copyright © 2011-2022 走看看