news 2026/5/6 12:36:39

Java中PageHelper的拦截器实现机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中PageHelper的拦截器实现机制

注意:Mapper中的select语句一定不能加分号,否则会报语法错误!!!!

PageHelper的核心是基于MyBatis实现分页,相当于一个“拦截器”,通过动态篡改SQL语句、拦截执行流程完成分页逻辑注入,核心机制可概括为以下3步:

1. 拦截器注册与触发时机

PageHelper通过 @Intercepts 注解声明拦截目标:聚焦MyBatis的 StatementHandler 接口,拦截其 prepare 方法。

启动时通过Spring配置或自动装配,将拦截器注册到MyBatis的 InterceptorChain ,执行SQL前会触发拦截逻辑。

2. 分页参数传递与SQL篡改

需先通过 PageHelper.startPage(pageNum, pageSize) 设置分页参数,该方法会将参数存入 ThreadLocal 。

拦截 prepare 方法时,拦截器从 ThreadLocal 中获取分页参数,若存在则:

1. 解析原始SQL

2. 拼接分页语法(MySQL用 limit ,Oracle用 rownum ),生成分页SQL(如 select * from user limit 0,10 );

3. 替换 StatementHandler 中的原始SQL,确保执行分页查询。

3. 总条数查询与结果封装

若开启 count 查询(默认开启),拦截器会生成总条数SQL(如 select count(*) from user ),单独执行获取总记录数。

执行分页SQL后,将查询结果与总条数封装为 Page 对象(继承 ArrayList ),包含页码、页大小、总条数、总页数等信息,最后清除 ThreadLocal 中的参数。

核心关键点

拦截器注解: @Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})}) 是拦截核心配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 12:14:04

Boltz-2生物分子结构预测工具:5分钟快速安装指南

Boltz-2生物分子结构预测工具:5分钟快速安装指南 【免费下载链接】boltz Official repository for the Boltz-1 biomolecular interaction model 项目地址: https://gitcode.com/GitHub_Trending/bo/boltz 想要在药物发现和生物分子研究中获得准确的结构预测…

作者头像 李华
网站建设 2026/5/6 12:15:01

24、量子信息理论中的信息、非物质主义与计算加速来源解析

量子信息理论中的信息、非物质主义与计算加速来源解析 量子基础原理的困境 在探讨量子相关理论时,基础原理面临着诸多挑战。例如,虽然存在实验问题,但现有理论并未解释其存在的原因。以纠缠现象为例,为什么并非所有实验问题的真值赋值都能像经典情况那样,简化为关于个体…

作者头像 李华
网站建设 2026/5/4 14:33:03

终极指南:使用Syncthing Tray轻松管理您的文件同步

终极指南:使用Syncthing Tray轻松管理您的文件同步 【免费下载链接】syncthingtray Tray application and Dolphin/Plasma integration for Syncthing 项目地址: https://gitcode.com/gh_mirrors/sy/syncthingtray 在当今多设备时代,文件同步已成…

作者头像 李华
网站建设 2026/5/1 1:01:27

EmotiVoice赋能传统家电智能化升级

EmotiVoice赋能传统家电智能化升级 在智能音箱早已走进千家万户的今天,人们开始追问:为什么家里的冰箱、空调、洗衣机还只能“滴滴”两声报警?当语音助手能在深夜轻声安慰情绪低落的用户时,我们的家电是否也能学会“温柔提醒”而不…

作者头像 李华
网站建设 2026/5/3 18:19:13

【光照】[PBR][几何遮蔽]实现方法对比

几何遮蔽的基本流程几何遮蔽(G)在BRDF中用于模拟微表面间的自阴影和遮蔽效应,其计算流程通常分为三个步骤:‌遮蔽项计算‌:光线入射方向的遮挡概率‌阴影项计算‌:视线方向的遮挡概率‌联合计算‌:将两者结合形成完整的…

作者头像 李华
网站建设 2026/5/5 14:25:49

EmotiVoice支持离线模式以增强数据安全

EmotiVoice:构建安全、智能的本地化语音合成新范式 在医疗报告朗读、金融客服播报、儿童教育设备交互等场景中,一个共同的需求正日益凸显——如何在不牺牲语音质量的前提下,确保用户输入的每一段文字都始终留在本地? 这不仅是隐私…

作者头像 李华