一、PageHelper插件的简介
PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。
二、PageHelper使用
1、导入jar包
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
2、在mybatis的配置文件中配置PageHelper
在mybatis中配置分页插件
<!-- 配置mybatis的分页插件 -->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 指定分页插件使用oracle方言 -->
<property name="helperDialect" value="oracle"/>
<!-- 分页合理化参数,默认值为false -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
在 Spring 配置文件中配置分页插件
<!-- 把SqlSessionFactory交给IOC管理 -->
<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>
3、使用PageHelper完成分页
3.1、直接通过RowBounds参数完成分页查询 。
//参数pageNum 是页码值,参数pageSize 代表是每页显示条数
RowBounds rowBounds = new RowBounds(page, pageSize);
return ordersDao.findAll(rowBounds);
3.2、使用PageHelper.startPage()静态方法完成分页。
//参数pageNum 是页码值 参数pageSize 代表是每页显示条数
PageHelper.startPage(page, size);
return ordersDao.findAll();
三、PageHelper分页插件参数详解
1、helperDialect
指定分页插件使用哪种方言,如:oracle , mysql , sqlite ,db2 , sqlserver等数据库。
注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012 ,否则会使用 SqlServer2005 的方式进行分页。
2、reasonable
分页合理化参数,默认值为false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
3、params
为了支持startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable ,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。