Pagehelper在SpringBoot2中的使用
1、在pom文件正确引入pagehelper-spring-boot-starter
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
2、不能引入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>
配置分页插件信息
1、在application.yml 中配置
#mybatis 分页插件
pagehelper:
helperDialect: oracle
reasonable: true
supportMethodsArguments: true
params: count=countSql
2、或者在application.properties文件中配置
#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
也可以使用代码的方式配置
@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;
}
}
分页代码实现
注意点:
1、PageHelper.startPage(page,size)方法一般要放在方法中的首行
2、PageHelper 只对其后的第一个查询有效
@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]
}