zoukankan      html  css  js  c++  java
  • Mybatis的插件 PageHelper 分页查询使用方法

    Mybatis的一个插件,PageHelper,非常方便mybatis分页查询。国内牛人的一个开源项目,有兴趣的可以去看源码,都有中文注释(ps:某些源码一大堆英文,痛哭流涕!)

    在github上仓库地址为:Mybatis-PageHelper

    它支持基本主流与常用的数据库,这可以在它的文档上看到。这里记录一下使用的基本方法


    0.查看文档与使用准备

    开发文档有中文文档也有英文文档


    PageHelper官方文档


    ============================================



    ====================================================================================





    1.配置拦截器插件


    这个是配置在mybatis-config.xml文件中

    文档中的示例:

    1. <!--   
    2.     plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:  
    3.     properties?, settings?,   
    4.     typeAliases?, typeHandlers?,   
    5.     objectFactory?,objectWrapperFactory?,   
    6.     plugins?,   
    7.     environments?, databaseIdProvider?, mappers?  
    8. -->  
    9. <plugins>  
    10.     <!-- com.github.pagehelper为PageHelper类所在包名 -->  
    11.     <plugin interceptor="com.github.pagehelper.PageInterceptor">  
    12.         <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->  
    13.         <property name="param1" value="value1"/>  
    14.     </plugin>  
    15. </plugins>  

    我的配置:

    1. <plugins>  
    2.     <plugin interceptor="com.github.pagehelper.PageInterceptor">  
    3.         <!-- config params as the following -->  
    4.         <!--<!–分页参数合理化  –>-->  
    5.         <property name="reasonable" value="true"/>  
    6.     </plugin>  
    7. </plugins>  

    一些配置参数的说明可以参考文档: 【分页插件参数介绍】

    这里就说明一下reasonable的配置:

    reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。


    那么如何选择这些配置参数,文档中也给出了详细说明:【如何选择配置这些参数】


    2.在代码中使用

    官方文档也有这部分说明和案例,那么我就以自己的使用案例

    1. @RequestMapping("/emps")  
    2. public String list(@RequestParam(required = false,defaultValue = "1",value = "pageNum")Integer pageNum,  
    3.                    Map<String,Object> map){  
    4.   
    5.     //引入分页查询,使用PageHelper分页功能  
    6.     //在查询之前传入当前页,然后多少记录  
    7.     PageHelper.startPage(pageNum,5);  
    8.     //startPage后紧跟的这个查询就是分页查询  
    9.     List<Employee> emps = employeeService.getAll();  
    10.     //使用PageInfo包装查询结果,只需要将pageInfo交给页面就可以  
    11.     PageInfo pageInfo = new PageInfo<>(emps,5);  
    12.     //pageINfo封装了分页的详细信息,也可以指定连续显示的页数  
    13.   
    14.     map.put("pageInfo",pageInfo);  
    15.     return "list";  
    16. }  
  • 相关阅读:
    pandas 流式导出excel
    django serializer 定制error_message
    selenium etree xpath使用总结
    Python之路--Python基础
    初见Flask
    Git
    MySQL补充——索引,流程控制,数据备份,python操作mysql,SQLAlchemy
    Python之路--Django--Ajax、同源策略、Jsonp、CORS
    Python之路--Django--form组件与model form组件
    Python之路--Django--中间件
  • 原文地址:https://www.cnblogs.com/jpfss/p/8706933.html
Copyright © 2011-2022 走看看