版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaozhirongfree1111/article/details/84955858
在使用pageHelper的时候,我遇到了点问题,最后发现是因为mybatis的版本和pageHelper的版本不对称的问题造成的,所以在此做笔记记录下来,我最后采用的版本如下:
- pom依赖
<mybatis.version>3.4.6</mybatis.version>
<pagehelper.version>5.1.4</pagehelper.version>
<mybatis.spring.version>1.3.2</mybatis.spring.version>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
- 如何配置分页插件呢,有两种方式,一种是作为mybatis的插件配置,另一种是作为spring的拦截器配置,说明如下:
(1)mybatis的插件配置
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="properties">
<value>
reasonable=true
</value>
</property>
</plugin>
</plugins>
(2)在 Spring 配置文件中配置拦截器插件
<!-- 创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<!-- 配置分页插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
- 使用方式如下:
public JsonResp findPage(Integer pageNum, Integer pageSize){
logger.debug("find page sample by pageNum={},pageSize={}",pageNum,pageSize);
JsonResp resp = new JsonResp();
if (pageNum == null) {
resp.setRespInfo(JsonResp.FAIL, "pageNum can not be null");
return resp;
}
if (pageSize == null) {
resp.setRespInfo(JsonResp.FAIL, "pageSize can not be null");
return resp;
}
try {
//关键之处:只会对紧跟着的查询做分页处理,如果有两次分页,则还需调用一次
PageHelper.startPage(pageNum,pageSize);
//startPage后紧跟的这个查询就是分页查询
Map<String,Object> params = new HashMap();
//查询所有数据
List<Sample> sampleList = sampleService.getAll(params);
PageInfo pageInfo = new PageInfo<>(sampleList,pageSize);
resp.setCode(JsonResp.SUCCESS);
resp.setResult(pageInfo);
}catch (Exception e){
logger.error(e.getMessage(),e);
resp.setRespInfo(JsonResp.FAIL, e.getMessage());
}
return resp;
}