Mybatis分页插件Pagehelper不生效的原因及解决
目录
- Pagehelper在SpringBoot2中的使用
- 配置分页插件信息
- 也可以使用代码的方式配置
- 分页代码实现
- 返回值格式
- 总结
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=www.devze.com"com.github.pagehelper.PageInterceptor"> <!-- 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 --> <property name="properties"> <value> helperDialect=oracle reasonable=true supportMethodsArguments=true params=count=countSql autoRuntimeDialect=true </value> </property> </beanwww.devze.com> </array> </property> <!-- 配置mybatis配置文件的位置 --> <!--<property name="configLocation" value="classpath:mybatis-config.xml"/&gpythont;--> </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, "hasMxNbrPdcPreviousPage":false, "hasNextPage":true, "navigatePages":8, "navigatepageNums":Array[4], "navigateFirstPage":1, "navigateLastPage":4, "list":Array[2] }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论