springboot集成PageHelper分页失效的原因及解决
前言
项目启动初期,在集成mybatis的分页插件,自定义封装了一个分页的工具类,方便后期项目的扩展。部分的代码如下:
/**
* 分页查询
* 进行count计算
*
* @param pageNum 页数
* @param pageSize 每页数量
* @param supplier 查询操作
* @return
*/
public static <T> PageInfo<T> pageQueryWithCount(int pageNum, int pageSize, Supplier<List<T>> supplier) {
if (pageNum < 1) pageNum = getDefaultPageNum();
if (pageSize < 1) pageSize = getDefaultPageSize();
try {
Page<T> page = PageHelper.startPage(pageNum, pageSize, true);
supplier.get();
return new PageInfo<T>(page);
} finally {
PageHelper.clearPage();
}
}问题
结果懵逼了,无法分页了。怎么设置搞都没办法正常分页,把我脑子搞晕乎了哎呀。
分析
- 发现问题
- 找了很久,一直不明白为什么会无法进行分页。对PageHelper进行了封装,然后直接调用的工具类的代码。我的代码如下:
PageInfo<SysUserDO> sysUserDOPageInfo = PageUtils.pageQueryWithCount(pageNum, pageSize, () ->
sysUserDao.get()
);
GenericPageRspBO genericPageRspBO = new GenericPageRspBO();
genericPageRspBO.setTotal(sysUserDOPageInfo.getTotal());
genericPageRspBO.setResultList(BeanCopyUtils.deepCopyBeanList(sysUserDOPageInfo.getList(), SysUserBO.class));
return genericPageRspBO;- 分析问题
- 为什么会出现这样的问题呢,在网上找了很久,但是没有找到对应的解决方案。因为项目是springboot工程,项目管理方面跟spring是有差异的,就像昨天对ApplicationContextAware做封装一样,需要使用@Component管理bean是一个道理。可能是maven依赖的问题导致的我的分页插件失效了。一开始使用的maven依赖
- 解决问题
- 为了验证我的猜想,我先把代码单独的拎出来打断点跑一下。代码如下:
PageHelper.startPage(1,5);
List<SysUserDO> sysUserDOS = sysUserDao.get();
PageInfo<SysUserDO> sysUserDOPageInfo = new PageInfo<>(sysUserDOS);- 结果正如所料,打了断点看代码,并没有成功的进行分页。设置了分页参数,但是查询了12条数据。

- 果然,把代码抽出来看一下就知道究竟是我的工具类封装有问题还是分页插件的问题。找到了问题接下来就顺畅很多了。我先替换了maven的依赖,使用springboot工程版本。maven依赖如下:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>- 这次打断点一看,分页成功了。

总结
做人做到底,送佛送到西。今天踩了一个坑。对PageHelper 分页失效的问题进行一下汇总。
PageHelper未正确配置: 请确保你的PageHelper配置在Spring Boot的配置文件中已经生效。你的配置看起来正确,但需要确保配置文件的位置和名称与Spring Boot的要求一致(通常是application.yml或application.properties)。
PageHelper版本问题: 有时候,PageHelper的版本与MyBatis或Spring Boot版本不兼容可能导致问题。请确保你正在使用兼容的版本。
注意pom.xml导入的依赖:应该是spring版本的而不是其独立的版本

SQL查询是否正确: 最后,请确保你的SQL查询在数据库中是有效的,且返回了正确的结果。你可以在数据库中手动运行查询来验证它是否按预期工作。
只有紧跟着PageHelper.startPage()的sql语句才被pagehelper起作用。(注意,经过再次验证,这里不是扯淡,其原理可能是
“PageHelper.startPage(pageNum,pageSize)”在使用的时候启动了一个线程,致使了其能达到这个效果”)
以上就是springboot集成PageHelper分页失效的原因及解决的详细内容,更多关于springboot集成PageHelper的资料请关注脚本之家其它相关文章!
相关文章
Spring Boot ORM 框架JPA使用与连接池 Hikari详解
这篇文章主要介绍了SpringBoot ORM框架JPA与连接池Hikari,主要就是介绍JPA 的使用姿势,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-08-08
Spring Session(分布式Session共享)实现示例
这篇文章主要介绍了Spring Session(分布式Session共享)实现示例,文章内容详细,需要的朋友可以参考下2023-01-01
Java class文件格式之特殊字符串_动力节点Java学院整理
特殊字符串出现在class文件中的常量池中,本着循序渐进和减少跨度的原则, 首先把class文件中的特殊字符串做一个详细的介绍, 然后再回过头来继续讲解常量池,对java class 文件格式相关知识感兴趣的的朋友一起学习吧2017-06-06
Spring boot项目redisTemplate实现轻量级消息队列的方法
这篇文章主要给大家介绍了关于Spring boot项目redisTemplate实现轻量级消息队列的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-04-04
Caused by: java.lang.NumberFormatException: For input s
这篇文章主要介绍了Caused by: java.lang.NumberFormatException: For input string: “port“,本文给大家分享完美解决方法,需要的朋友可以参考下2023-01-01
浅谈java Iterator.remove()方法的用法(详解)
下面小编就为大家带来一篇浅谈java Iterator.remove()方法的用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-01-01
Java项目之java+springboot+ssm实现理财管理系统设计
这篇文章主要介绍了Java项目java+springboot+ssm实现理财管理系统设计,使用了当前较为流行的spring boot,spring,spring mvc,mybatis,shiro框架分页处理使用了pagehelper进行操作,需要的朋友可以参考一下2022-03-03


最新评论