若依框架---PageHelper分页(十一)

article/2025/6/26 22:06:20

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者
📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人
 

  

我们终于发现了PageHelper中执行修改SQL语句的方法:MySqlDialect.getPageSql

通过这几天的文章,我们了解到了PageHelper是通过拦截Mybatis中的Executor来实现的。之前我们只关注PageHelper的执行细节,今天我们来看一下PageHelper的整体文件结构:

整个项目的包路径为:com.github.pagehelper中。

拦截器

包中首先是两个拦截器类:PageInterceptor 以及 QueryInterceptor。两个类的注解中均为

@Signature(type = Executor.class, method = "query"....

即并且均拦截了Mybatis中4个参数与6个参数的Executor。这一点我们从PageHelper的wiki中也能获取到。

接口

我们在包中还发现了几个接口:

Dialect:数据库方言,针对不同数据库进行实现。

AutoDialect<K>: 自动获取方言,其中<K>为缓存key类型。

BoundSqlInterceptor: BoundSql 处理器。其中还有一个内部接口:

Chain:处理器链,可以控制是否继续执行。

Constant: 常量接口。

IPage: 接口,定义了三个方法:getPageNum、getPageSize、getOrderBy。

ISelect: 分页查询接口,定义了一个方法doSelect()。

 继承自Mybatis中的类

PageRowBounds: 它继承自org.apache.ibatis.session.RowBounds,包含属性值NO_ROW_OFFSETNO_ROW_LIMIToffsetlimit等,并扩展了字段totalcount

 异常处理类:

PageException:继承自RuntimeException。

其他类:

Page:我们在代码解读中见过多次,知道是通过它来保存分页参数的,并且程序执行过程中是通过ThreadLocal<Page>线程局部变量来做局部传参,其中保存的参数有:pageNum页码, pageSize页码大小, startRow起始行, endRow末行, total总数, pages总页数, 布尔类型count表示是否包含count查询,布尔类型reasonable表示分页是否合理化,其他参数包括pageSizeZero, countColumnorderByorderByOnly,sql拦截器BoundSqlInterceptor, BoundSqlInterceptor.Chain,分页实现类dialectClass

dialectClass注释中写道

分页实现类,可以使用 {@link com.github.pagehelper.page.PageAutoDialect} 类中注册的别名,例如 "mysql", "oracle"

 等阐述到如何绑定mysql时我们再剖析来阐述。

题外话

参加工作后接触拦截器是在国产开源项目Jfinal中,其中通过interceptor,before,clear来控制接口的拦截器,当时觉得很神奇(现在也觉得蛮神奇)。

拦截器主要是通过使用反向代理或其他方式,实现控制接口中的拦截器执行方式及其顺序等。

规范名称叫AOP,面向切面编程,有时间写两篇实现拦截器的文章,一起学习!

专栏 : 若依框架 

                                                                           关注公众号,领取资料。 


http://chatgpt.dhexx.cn/article/aD9eTDDJ.shtml

相关文章

若依框架代码自动生成器研究----表查询篇

最近生产环境用了一个开源系统&#xff1a;若依&#xff0c;其中有一个版块很有意思&#xff0c;很能提高生产效率: “代码生成器”。 其功能所处模块菜单为&#xff1a;系统工具->代码生成。我们来研究一下他的代码生成逻辑。 工具使用方法 1、建表 使用代码生成&#…

若依框架详细使用教程

目录 若依简介 若依使用 搭建后端 搭建前端 若依的使用 若依简介 RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi开源|RuoYi视频|若依视频|Ruo…

部署若依框架

若依官网&#xff1a; http://www.ruoyi.vip/点击直接进入若依官网 下载资源 &#xff08;共有三个版本供下载&#xff0c;依次尝试部署&#xff09; 前后端不分离版 点击 ruoyi源码下载&#xff0c;进入gitee,选择 克隆/下载。我这里选择的是下载ZIP包。解压后使用 idea 导入…

若依框架---PageHelper分页(十)

在前几天的文章中&#xff0c;我们介绍了PageHelper的分页方法&#xff0c;研读代码定位到了ExecutorUtil.pageQuery(...)方法&#xff0c;并阅读到了其中的部分代码。 今天我们将看到重要的SQL修改代码。 getPageSql 我们接着看代码&#xff1a; if (!dialect.beforePage(…

若依框架(一 运行框架)

若依框架-前后端分离版(一) 框架介绍 本身是一个优秀的简单的后台管理系统框架,前端(Vue,ElementUI),后端(Spring Boot、Spring Security、Redis & Jwt(JWT即JSON Web Token,是一种在两方之间以紧凑、可验证的形式传输信息的方式。此信息可以验证和信任&#xff0c;因为它…

若依框架搭建和使用

一.搭建系统 若依官网&#xff1a;RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi开源|RuoYi视频|若依视频|RuoYi开发文档|若依开发文档|Java开源框…

若依框架---模板生成

上次说到通过mybatis-collection机制&#xff0c;将数据库中的一对多数据映射为Java对象GenTable&#xff0c;之后又是如何一步一步的生成预览代码的呢&#xff1f; 我们注意到GenTable中有一个字段名为tplCategory&#xff0c;它可取值crud&#xff0c; tree&#xff0c;sub&…

导出(若依框架)

导出&#xff08;若依框架&#xff09; 分析用户界面&#xff0c;以用户列表的导出为例。 导出 前端代码 ​ 点击导出按钮&#xff0c;触发函数handleExport&#xff0c;在该函数中调用exportUser&#xff0c;exportUser执行完毕后&#xff0c;再调用download方法下载。 ex…

简单入门若依框架

前言 本篇博客仅对若依框架的使用进行简单的介绍&#xff0c;它和php的fastadmin框架非常类似&#xff0c;是可以根据数据库表自动的生成一个完整的管理后台。关于fastadmin框架&#xff0c;我在前面的博客中有过简单的介绍&#xff0c;感兴趣的朋友可以查看这篇博客。 一、下载…

若依框架AjaxResult改造适应Swagger接口文档

一、 概述 若依框架后端使用的响应对象AjaxResult&#xff0c;和Swagger存在不兼容问题&#xff0c;导致返回体即使使用了Swagger注解&#xff0c;但是Swagger接口文档中&#xff0c;不显示返回体的对象Swagger文档&#xff1a; 若依Gitee上&#xff0c;也存在此问题&#x…

若依框架数据库密码加密

1. 用 Druid 提供的方法加密密码&#xff0c;控制台会输出三对值&#xff0c;分别是&#xff1a;privateKey、publicKey、password public static void main(String[] args) {String password "password";try {ConfigTools.main(new String[]{password});} catch (…

IDEA若依框架新建模块

创建新的module 项目上鼠标右键 选择Maven项目 Parent选ruoyi 点击Finish 编辑RuoYi-Vue_Wisdom/ruoyi-wisdom/pom.xml 在<artifactId>ruoyi-wisdom</artifactId>下面增加 <dependencies><!-- 通用工具--><dependency><groupId>com…

若依框架登录去除验证码

若依框架自带的登录功能还是挺好用的。但是在开发过程中经过因在编写代码或者编写设计文档登录会话到期重新登录。重新登录就会出现验证码&#xff0c;一天如果要输入10次验证码也会浪费不少时间。 验证码这个功能在生产环境非常有必要&#xff0c;但是在开发模式完全没有价值…

若依框架解析

1.框架介绍 RuoYi是一个基于Java技术开发的后台管理系统&#xff0c;基于技术组合&#xff08;SpringBootVue&#xff09;,内置模块有&#xff1a;部门管理、角色用户、菜单即按钮授权、数据权限、系统参数、日志管理、代码生成、表单构建等。支持多数据源、支持分布式事务。 …

若依框架项目

若依框架介绍 ruoyi是一个基于Java技术开发的后台管理系统。 包括有前后端分离版、微服务版、App版。内置模块有&#xff1a;部门管理、角色用户、菜单即按钮授权、数据权限、系统参数、日志管理、代码生成、表单构建等。支持多数据源、支持分布式事务。 若依前后端分离项目搭…

若依框架的使用

目录 1.为什么使用若依框架 2.环境搭建 2.1下载代码 2.2 系统配置 1.为什么使用若依框架 若依是一个快速开发框架&#xff0c;基于springboot&#xff0c;集成了mybatis&#xff0c;spring security&#xff0c;redis等常用的框架&#xff0c;支持多语言&#xff0c;已经实…

若依框架RuoYi前后端分离项目导入IDEA及运行启动

首先需要在码云上下载RuoYi-vue解压到你的工作目录&#xff08;https://gitee.com/y_project/RuoYi-Vue&#xff09; 然后去nodejs官网下载nodejs 除了选择你的安装目录一直next&#xff08;查看环境变量是否配置成功&#xff09; 安装完成后&#xff0c;cmd中输入&#xff1a;…

ruoyi(若依)框架使用说明(前后端分离)

TOC 框架介绍 本身是一个优秀的简单的后台管理系统框架,前端(Vue,ElementUI),后端(Spring Boot、Spring Security、Redis & Jwt),本身可以直接拉下来直接使用.它的强大之处在于代码自动生成器的使用,可以根据数据库的表对应生成全套前后端代码,代码植入后可以直接使用,复…

使用若依框架RuoYi前后端分离版(超详细步骤)

下一客:若依框架代码生成工具–单表增删改查(超详细步骤) 一、若依框架RuoYi项目运行启动教程(详细步骤) 1.1 官网下载代码 第一步:简介 RuoYi-Vue是一款基于SpringBootVue的前后端分离极速后台开发框架。 官网链接 在线文档 第二步:下载源码 1.点击复制,将链接复制到IDEA中…

若依开源框架解析

1、框架介绍 RuoYi是一个基于Java技术开发的后台管理系统&#xff0c;目前官方同步在维护的有3个版本。 开源协议&#xff1a;MIT 解释&#xff1a;MIT是和BSD一样宽松的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论…