news 2026/6/23 11:54:04

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/6/19 2:17:05

为什么EmotiVoice成为开发者最青睐的开源TTS引擎?

为什么EmotiVoice成为开发者最青睐的开源TTS引擎? 在虚拟主播直播带货、AI客服深夜答疑、游戏角色情绪爆发的今天,语音早已不再是冷冰冰的文字朗读。用户期待的是“有温度”的声音——能愤怒、会惊喜、懂克制,甚至带着一丝疲惫的叹息。然而&a…

作者头像 李华
网站建设 2026/6/23 20:44:50

18、量子测量、信息增益与量子信息理论的哲学思考

量子测量、信息增益与量子信息理论的哲学思考 1. 量子测量与信息增益 1.1 信息增益的衡量方式 在量子测量中,信息增益有多种衡量方式,这里主要关注通过优势关系(majorization relation)和熵不等式来表达的信息增益。 优势关系 优势关系的直观解释是,如果 (x \prec y)…

作者头像 李华
网站建设 2026/6/23 20:44:57

26、量子计算、力学与密码学深度解析

量子计算、力学与密码学深度解析 1. 量子算法原理剖析 量子算法在解决特定问题时展现出了巨大的优势,下面将详细剖析几种典型的量子算法。 1.1 周期查找算法 像 Simon 算法和 Shor 算法这类周期查找算法,其核心是将函数定义域的不同划分(由不同可能的周期定义)编码为希…

作者头像 李华
网站建设 2026/6/23 4:23:14

Nginx gzip压缩完整配置指南:如何快速提升网站性能

Nginx gzip压缩完整配置指南:如何快速提升网站性能 【免费下载链接】Linux-Tutorial Linux-Tutorial是一个Linux系统教程,适合用于学习和掌握Linux命令行操作和系统管理技能。特点:内容详细、实例丰富、适合入门。 项目地址: https://gitco…

作者头像 李华
网站建设 2026/6/22 1:50:34

[深度学习] 大模型学习5-高效微调框架Unsloth使用指北

Unsloth框架介绍1.1 Unsloth概览Unsloth是一款专为大语言模型微调与强化学习设计的开源框架,致力于以更高的效率和更低的资源成本推动人工智能技术的普及。用户可在本地环境、Google Colab、Kaggle等平台上,借助其运算加速与显存优化能力,轻松…

作者头像 李华
网站建设 2026/6/23 20:29:11

WIndows安装MongoDB数据库

WIndows安装MongoDB数据库 通过网盘分享的文件:MongoDB数据库 链接: https://pan.baidu.com/s/1El_riiJxtFQWKn76hx-jyA?pwd1234 提取码: 1234 一 先安装mongodb-windows-x86_64-6.0.1-signed.msi二 再安装mongodb-compass-1.33.1-win32-x64.exe

作者头像 李华