SpringBoot整合通用Mapper和PageHelper,使用PageHelper.startPage()失效的问题

PageHelper分页失效,结果都是查询的结果条数 PageHelper 阅读详情

使用SpringBoot创建工程,在配置好通用Mapper和PageHelper后,发现使用PageHelper.startPage()后,查询结果一直是表中的所有数据,PageHelper.startPage()失效。

SpringBoot项目中必须使用该包pagehelper-spring-boot-starter

pom.xml

<!-- 通用mapper -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>
<!-- PageHelper分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

在配置dialect: mysql,一直报错。通过网上资料发现使用全类名可以解决该问题。但是在使用PageHelper.startPage()方法时,分页并不会生效。

application.yml中配置通用mapper和PageHelper

#通用mapper配置
mapper:
  identity: MYSQL

#PageHelper插件配置 该配置对PageHelper不起作用。使用config包中的PageHelperConfig方式可以起作用。
pagehelper:
  #原来的配置 dialect: mysql              
  #解决途径:通过debug源码,发现配置文件读取到的是“mysql”,而源码中需要的是一个类的全类名来反射,所以推断这个属性值不是mysql,而是一个全类名。
  dialect: com.github.pagehelper.dialect.helper.MySqlDialect
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

查询资料发现也有使用以下配置PageHelper的,使用此配置即可正确的处理分页。原因未知,依然是满脸疑惑,但是功夫不负有心人还是将问题解决了。有知道的博友可以留言哦,谢谢。如果要配置该文件,需要将application.yml的PageHelper插件配置删除掉,否则PageHelper.startPage()仍然会失效,将会查询出所有数据。

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class PageHelperConfig {

    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper=new PageHelper();
        Properties properties=new Properties();
        //把这个设置为true,会带RowBounds第一个参数offset当成PageNum使用
        properties.setProperty("offsetAsPageNum","true");
        //设置为true时,使用RowBounds分页会进行count查询
        properties.setProperty("rowBoundsWithCount","true");
        properties.setProperty("reasonable","true");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

以下是项目中主要代码。

User实体类

@Repository
@Table(name = "user")
//mybatis通用接口mapper依赖JPA实体类采用JPA,配置表名
public class User implements Serializable {

    //配置主键
    @Id
    private String username;
    private String password;
	
	//省略getter和setter方法

Maper层:

UserMaper

import com.zueb.domain.User;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.spring.annotation.MapperScan;

@MapperScan("com.example.mapper")
public interface UserMapper extends BaseMapper<User> {
}

业务层:

IUserService

/**
 * 处理用户逻辑的业务层接口
 */
public interface IUserService {

    /**
     * 获取用户列表
     * @return List<User>
     */
    PageInfo<User> findAll(int pageNum, int pageSize);
}

UserServiceImpl

@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public PageInfo<User> findAll(int pageNum, int pageSize) {
        //参数pageNum是页码 参数pageSize 代表每页显示条数
        PageHelper.startPage(pageNum,pageSize);

        //调用userMapper获取所有用户
        List<User> users = userMapper.selectAll();

        PageInfo<User> pageInfo = new PageInfo<>(users);
        return pageInfo;
    }
}

控制层:

UserController

@RestController
@RequestMapping("/users")
public class UserController extends BaseController{

    @Autowired
    private IUserService userService;

    /**
     * 处理获取用户列表请求
     * @return JsonResult对象 返回为json数据
     */
    @RequestMapping("/userList")
    public JsonResult<List<User>> logout(HttpSession session) {
        PageInfo<User> pageInfo = userService.findAll(1,5);
        List<User> data = pageInfo.getList();
        return new JsonResult<>(OK,data);
    }
}
【bug记录】pagehelper分页失效:一次输出所有数据,查询总数错误。 【完美解决】pagehelper分页失效:一次输出所有数据,查询总数错误。 阅读详情

相关推荐

SpringBoot集成MyBatis-PageHelper分页插件配置与优化

分页查询是数据库操作中的基础技术,通过合理分页可以有效降低内存消耗并提升查询效率。MyBatis-PageHelper作为MyBatis生态中的分页插件,通过拦截器机制实现物理分页,相比内存分页具有更好的性能表现。在SpringBoot项目中,通过starter依赖可以快速集成PageHelper,配合yaml配置可灵活调整分页策略。对于大数据量场景,异步count查询和分页缓存能显著提升性能,而统一的分页响应格式则有利于前后端协作。本文以MySQL为例,详细演示了从基础配置到生产优化的全流程实践,特别针对

weixin_30617797的博客 384

SpringBoot整合Mybatis-PageHelper分页插件实战指南

数据分页是Web应用开发中的基础功能,通过物理分页技术可以有效提升查询性能和用户体验。Mybatis-PageHelper作为Mybatis生态中的分页插件,基于拦截器机制实现SQL自动改写,支持多种数据库方言。在SpringBoot项目中,通过简单的starter配置即可快速集成,大幅减少传统分页开发的重复代码量。该插件不仅提供基础分页功能,还支持参数化分页、Lambda表达式等现代Java特性,并能通过异步count查询等优化手段处理大数据量场景。典型应用包括后台管理系统数据展示、报表导出分页处理等,是

weixin_34007886的博客 411

MyBatis分页插件PageHelper实战指南

数据库分页是Web开发中的核心技术,通过物理分页(数据库层面)实现数据分批加载,能有效提升系统性能和用户体验。MyBatis作为主流ORM框架,其分页插件PageHelper采用拦截器机制自动改写SQL,支持MySQL、Oracle等10余种数据库方言,解决了多数据库兼容性问题。在SpringBoot项目中,通过简单配置即可实现零侵入的分页功能,配合PageInfo对象能自动计算总页数等元数据。对于电商商品列表、后台管理系统等大数据量场景,合理使用分页插件(如设置countSqlParser优化)可避免性能

weixin_34221036的博客 440

springboot整合mybatis分页插件不生效问题

我在项目中使用的springboot版本是3.0.5,mybatis-starter版本是3.0.1,经查, pagehelper-starter1.2.5发行日期是: Apr 22, 2018。经检查,我写的代码没有问题,于是我又去访问了pagehelper的官网,以及它的官网教程。做项目时发现导入分页插件的场景启动器后,分页插件不生效,一直查询出所有数据。于是我将pagehelper-starter版本换成了1.4.6,问题解决。而且我导入的是分页插件的场景启动器,按理说不需要再进行额外的配置。

2401_82802869的博客 2087

Java工程师为何回归IDEA:SpringBoot+MyBatis深度开发不可替代的确定性

在Java后端开发中,IDE不仅是代码编辑器,更是理解SpringBoot自动装配、MyBatis映射语义和JVM类结构的核心基础设施。其底层依赖PSI语法树解析、Spring Boot元数据索引与MyBatis XML Schema校验等编译器级能力,实现方法跳转、配置补全、动态SQL实时校验等高确定性功能。相比基于LLM文本续写的AI辅助工具(如Cursor),IDEA能精准识别@ConditionalOnProperty条件绑定、@TableField字段映射缺失、Optional空值风险等工程隐患,

weixin_33861800的博客 382

JavaWeb之Springboot原理与实战

启动SpringBoot项目的主入口程序 HelloController.java文件内容如下: 在浏览器输入localhost:8888/hello 三、Springboot3+MyBatis+Swagger整合实战 项目结构 数据库表结构

yumiwangzi30的博客 209

pagehelper分页不生效,搜出了全部数据

看看PageHelper.startPage(page,size)语句的位置,该语句一定要放到要执行分页的sql方法的前面,中间要是有执行其他的sql查询方法,那么就会影响真正要分页的查询语句的结果。

硅脂味咖啡的博客 2612

Springboot项目PageHelper升级到5.3.2版本分页查询失效

现象是gateway 网关 报错FluxOnAssembly$OnAssemblyException,经过排查,发现是分页查询时返回了2000多条数据,导致数据量超出了网关限制,从而抛错。也就是pageHelper分页查询未生效。

Jet_qi的博客 1733

springboot整合PageHelper分页失效(架包导入正确)

刚使用PageHelper做分页时,遇到的一个平时没注意的点,导致分页不生效。分享出来给以后遇到类似问题的小伙伴一个参考 1.首先确保架包引用正确 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-sta...

zhouhuahao的博客 2409

SSM+SpringBoot旅游网站实战:从工程搭建到部署上线全流程

在Java Web开发中,SSM(Spring+SpringMVC+MyBatis)作为经典的三层架构组合,配合SpringBoot的自动配置与内嵌容器,既能保留清晰的代码分层,又能大幅降低配置成本,是单体项目高效落地的务实之选。本文从基础概念入手,梳理SSM与SpringBoot的三种集成形态,并围绕工程搭建、核心业务闭环、前后端分离联调与云端部署展开实践解析。内容涵盖多条件检索、订单事务、JWT身份认证、文件上传、跨域处理等高频技术点,同时针对“springboot版本太高”引发的依赖冲突、IDEA新建

weixin_34259232的博客 402

SpringBoot校园二手市场毕设实战:从数据库设计到部署全流程解析

在Java Web开发领域,SpringBoot作为主流的后端框架,以其开箱即用和约定大于配置的特性,极大地简化了企业级应用的构建流程。其核心原理在于通过自动配置和起步依赖,快速整合Web、数据访问、安全等模块,使开发者能聚焦于业务逻辑实现。这一技术价值在于提升了开发效率,降低了项目启动门槛,尤其适合快速构建原型和中小型项目。在电商、内容管理等典型应用场景中,SpringBoot常与MyBatis、MySQL等技术栈协同,实现高内聚、低耦合的系统架构。本文以校园二手市场这一经典毕业设计选题为例,深入剖析如何

weixin_33895475的博客 461

SpringBoot整合通用Mapper实战:从入门到精通,避坑指南与性能优化

在Java后端开发中,ORM框架是数据持久层的核心技术,它通过对象关系映射简化了数据库操作。MyBatis作为主流ORM框架,以其灵活性著称,但手动编写大量SQL语句仍显繁琐。通用Mapper(tk.mybatis)基于MyBatis,通过注解和接口继承自动生成SQL,显著提升了单表CRUD的开发效率。其技术价值在于遵循约定大于配置的原则,减少了重复代码,但同时也引入了动态SQL生成和复杂查询支持等挑战。在实际应用场景中,开发者常面临配置细节、方法误用及性能问题。本文聚焦于通用Mapper的高频使用场景,深

weixin_34199405的博客 419

SpringBootWeb案例(结合Mybatis)

前面我们已经完了基础的分页查询,大家会发现:分页查询功能编写起来比较繁琐。在Mapper接口中定义两个方法执行两条不同的SQL语句:查询总记录数指定页码的数据列表在Service当中,调用Mapper接口的两个方法,分别获取:总记录数、查询结果列表,然后在将获取的数据结果封装到PageBean对象中。大家思考下:在未来开发其他项目,只要涉及到分页查询功能(例:订单、用户、支付、商品),都必须按照以上操作完成功能开发结论:原始方式的分页查询,存在着"步骤固定"、"代码频繁"的问题。

weixin_45210565的博客 1767

SpringBoot3与Mybatis整合实战与优化指南

ORM(对象关系映射)技术是现代Java开发中的核心组件,它通过将数据库表映射为Java对象,显著提升了开发效率。MyBatis作为轻量级ORM框架,以其灵活的SQL编写能力和良好的性能著称。SpringBoot则通过自动配置机制简化了Java应用的初始化过程。两者的结合既保留了SpringBoot的便利性,又能充分发挥MyBatis对复杂SQL的掌控力。在企业级应用开发中,这种组合常用于需要精细控制SQL性能的场景,如电商系统、金融交易平台等。本文以SpringBoot3和MyBatis的最新版本为例,详

weixin_30856725的博客 429

手把手教你用STM32单片机DIY一个简易PLC(附完整电路图与PCB文件)

本文详细介绍了如何利用STM32单片机DIY一个简易PLC控制器,涵盖硬件设计、电路图解析、PCB布局优化及固件框架实现。通过完整的电路图和PCB文件,帮助读者从元器件选型到工业级优化,逐步构建可靠的PLC系统,特别适合工业自动化爱好者和学习者实践。

weixin_42527160的博客 571

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 341

SpringBoot3整合Mybatis实战指南与避坑技巧

MyBatis作为Java生态中广泛使用的ORM框架,通过XML或注解方式将SQL与代码解耦,显著提升数据库操作效率。其核心原理是通过SqlSessionFactory构建数据库会话,结合动态代理机制实现Mapper接口与SQL语句的绑定。在SpringBoot3环境下整合MyBatis时,需特别注意JDK17+的版本要求与MyBatis 3.5.10+的兼容性。通过合理配置数据源连接池(如HikariCP)、正确设置Mapper扫描路径,可以构建高性能的数据访问层。实际开发中常遇到分页插件整合、枚举类型处

weixin_33739646的博客 408

self‑improving‑agent 安装与配置指南(OpenClaw)

长期记忆错误反思用户偏好学习持续进化AI → 反思 → 学习 → 改进。

tiantiantbtb的博客 1340

JB3-4-SpringBoot(二)

整合MyBatis(事务机制,并发现象,悲观锁,乐观锁),整合SpringCache,整合PageHelper,整合SpringDoc,整合HibernateValidator,整合EasyExcel等。

周航宇的博客 1495

高级电机控制场景实例:基于Simulink的永磁同步电机基于Luenberger观测器的弱磁控制仿真

本文基于Simulink实现表贴式永磁同步电机(SPMSM)的Luenberger观测器弱磁控制仿真,通过构建“观测-弱磁-控制”协同逻辑,突破传统矢量控制的基速限制。利用线性化模型设计观测器实时估计电流与磁链,结合电压极限约束动态注入负d轴电流,实现转速扩展至12000rpm(4倍基速),弱磁区电流THD低于3%,动态响应时间小于5ms,验证了高速运行下系统稳定性与鲁棒性。附完整建模步骤、MATLAB函数代码及性能分析,适用于电动汽车、机床等高速驱动场景,为高级电机控制提供可复现的技术范式。

amy_mhd的博客 32

Open3D点云算法与点云深度学习案例汇总(长期更新)

Open3D-python算法专栏文章汇总,长期更新算法原理与实战案例。

纵马踏花向自由 7467

Java工程师为何回归IDEA:Cursor与IDEA在SpringBoot/MyBatis开发中的本质差异

IDE(集成开发环境)是Java工程实践的核心基础设施,其能力边界直接决定开发效率与系统稳定性。在SpringBoot和MyBatis等强约定、深集成的Java生态中,IDE需具备编译期类型推导、字节码级导航、框架生命周期透视及数据库元数据联动等确定性能力——这远超LLM驱动的‘概率性补全’范畴。Cursor虽在自然语言交互与代码生成上表现亮眼,但在SpringBoot自动配置解析、MyBatis Mapper-XML-实体三重绑定验证、运行时SQL参数追踪等关键环节缺乏工程级语义理解;而IDEA凭借十年级

weixin_30847939的博客 394

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3819

mybatis

创建MyBatis的核心配置文件 创建mapper接口 创建MyBatis的映射文件 相关概念:ORM(Object Relationship Mapping)对象关系映射。 对象:Java的实体类对象 关系:关系型数据库 映射:二者之间的对应关系 Java概念 数据库概念 类 表 属性 字段/列 对象 记录/行 映射文件的命名规则 表所对应的实体类的类名+Mapper.xml 例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapp

while(life)++; 502

ruoyi-vue-pro集成magic-api(图文代码)

原先写过简单的集成:了解 magic-api的基本用法 附实战代码 magic-api相关文档推荐阅读:接口鉴权 相关的Java代码推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 【Java项目】实战CRUD的功能整理(持续更新)

码农研究僧的博客 7万+

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

【代码】pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?

虫无涯的博客 1390
上一篇: 如何在form.serialize中获取下拉值和文本?
下一篇: SpringCloud Eureka Server 高可用环境搭建遇到的问题
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值