springboot 整合pagehelper
阅读数:179 评论数:0
跳转到新版页面分类
python/Java
正文
一、概述
PageHelper是开源免费的mybatis第三方分页插件。
二、使用
1、pom引入
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.2</version>
</dependency>
不能再引入pagehelper,除非在mybatisConfig.xml文件中再加入配置:
<!-- mybatis分页-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.4</version>
</dependency>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
<property name="typeAliasesPackage" value="com.xxx.xxx.common.model"></property>
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<!-- 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 -->
<property name="properties">
<value>
helperDialect=oracle
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
</array>
</property>
<!-- 配置mybatis配置文件的位置 -->
<!--<property name="configLocation" value="classpath:mybatis-config.xml"/>-->
</bean>
2、配置
(1)在application.yml中配置
#mybatis 分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
helperDialect: 分页插件会自动检测当前的数据库链接,自动选择合适的分页方式,也可以手动配置:
oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
offsetAsPageNum:默认值为false,当为true时,会使用RowBounds中的offset参数当成pageNum使用。
rowBoundsWithCount:默认值为false,当为true,使用RowBounds分页进行count查询。
pageSizeZero:默认值为false,当为true时,如果pageSize=0或RowBounds.limit=0就会查询出全部的结果,相当于没有分页。
reasonable:分页合理化参数,默认值为false,当设置为true时,pageNum<=0时会查询第一页,pageNum>pages(超过总数),会查询最后一页。
params:用于从对象中根据属性名取值,可以配置pageNum, pageSize, count, pageSizeZero, reasonable,不配置映射的用默认值 ,默认值为pageNum=pageNum; pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZerson=pageSizeZero。
supportMethodsArguments:支持通过Mapper接口来传递参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面的params配置的字段中取值,查找到合的值时就会自动分而。
(2)也可以使用代码的方式配置
@Configuration
public class PageHelperConfig {
@Bean
public PageHelper getPageHelper() {
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("helperDialect", "mysql");
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties);
return pageHelper;
}
}
3、代码中使用
PageHelper.startPage(需要显示的第几个页面,每个页面显示的数量);
下一行紧跟查询语句,不可以写其他的,否则没有效果。
@Override
public PageInfo<User> findUserList(Integer page, Integer size) {
// PageHelper 只对其后面的第一个查询有效
PageHelper.startPage(page,size);
// 执行分页查询
List<User> list1=userMapper.selectUserList();
// 不会执行分页查询
List<User> list2=userMapper.selectUserList();
// 返回结果
PageInfo<User> pageInfo=new PageInfo<User>(list1);
return pageInfo;
}
返回格式
{
"total":34,
"pageNum":1,
"pageSize":10,
"size":10,
"startRow":1,
"endRow":10,
"pages":4,
"prePage":0,
"nextPage":2,
"isFirstPage":true,
"isLastPage":false,
"hasPreviousPage":false,
"hasNextPage":true,
"navigatePages":8,
"navigatepageNums":Array[4],
"navigateFirstPage":1,
"navigateLastPage":4,
"list":Array[2]
}