PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例
如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。
本项目在 github 的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
本项目在 gitosc 的项目地址:http://git.oschina.net/free/Mybatis_PageHelper
引入jar包
你可以从下面的地址中下载最新版本的 jar 包
https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
由于使用了sql 解析工具,你还需要下载 jsqlparser.jar:
http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.5/
搭建步骤
pom文件
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
插件配置
在 MyBatis 配置 xml 中配置拦截器插件
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
在 Spring 配置文件中配置拦截器插件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注意其他配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个 -->
<value> params=value1
</value>
</property>
</bean> </array>
</property>
</bean>
零配置方案配置拦截器
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource da) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(da);
//设置分页的拦截器
PageInterceptor pageInterceptor = new PageInterceptor();
//创建插件需要的参数集合
Properties properties = new Properties();
//配置数据库方言 为oracle
properties.setProperty("helperDialect", "oracle");
//配置分页的合理化数据
properties.setProperty("reasonable", "true");
pageInterceptor.setProperties(properties);
//将拦截器设置到sqlSessionFactroy中
sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageInterceptor});
return sqlSessionFactoryBean;
}
使用方法
@Override
public List<TbClass> selectByPage(Integer pageNo, Integer pageSize) {
if (pageSize == null) pageSize = 5;
if (pageNo == null) {
pageNo = 1;
}
// 重点是这句代码
PageHelper.startPage(pageNo, pageSize);
List<TbClass> list = classMapper.selectByPage();
return list;
}
PageHelper使用总结
PageHelper使用只需要三步
1.导入jar包(maven工程直接引入对应坐标)
2.配置插件给mybaitis(和spring整合后,可以直接将插件属性配置给sqlsessinoFactoryBean,),配置好后工厂在创建sqlSession时候会为我们载入配置
3.使用时调用方法,常见方式是,在service中,执行dao查询对应查询方法之前,调用分页的静态方法PageHelper.startPage
分页插件其他方法使用介绍
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md