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. }  
posted @ 2018-04-03 10:39  星朝  阅读(14344)  评论(0编辑  收藏  举报