若依框架的startPage( )函数怎么自动关联查询SQL语句?

这篇具有很好参考价值的文章主要介绍了若依框架的startPage( )函数怎么自动关联查询SQL语句?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Question Description

使用JAVA语言的若依框架的时候,发现只要使用了startPage()函数, 并不需要前端传递分页的数据,也不需要注解,就能完成分页功能。预判他应该是使用类似拦截器的机制,但还是感觉很神奇,感觉知道个大概不过瘾,还是要更细致的了解才能满足,就想研究一下并记录下来。

/**
 * 查询test用户管理列表
 */
@RequiresPermissions("user:manage:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(TUser tUser)
{
    startPage();
    // 获取 t_table1 表数据
    List<T_table1> list = T_table1Service.selectT_table1List(new T_table1());
    return getDataTable(list);
}
开启 startPage()函数
17:43:42.395 [http-nio-80-exec-26] DEBUG c.r.k.m.T.selectTProductList - [debug,137] - ==>  Preparing: select * from t_table1 LIMIT ?
17:43:42.396 [http-nio-80-exec-26] DEBUG c.r.k.m.T.selectTProductList - [debug,137] - ==> Parameters: 10(Integer)
17:43:42.429 [http-nio-80-exec-26] DEBUG c.r.k.m.T.selectTProductList - [debug,137] - <==      Total: 10

关掉 startPage()函数
17:53:13.356 [http-nio-80-exec-12] DEBUG c.r.k.m.T.selectTProductList - [debug,137] - ==>  Preparing: select * from t_table1
17:53:13.357 [http-nio-80-exec-12] DEBUG c.r.k.m.T.selectTProductList - [debug,137] - ==> Parameters: 
17:53:13.371 [http-nio-80-exec-12] DEBUG c.r.k.m.T.selectTProductList - [debug,137] - <==      Total: 53

使用startPage()之后,去执行SQL查询的语句就会不同,那么问题来了,他是怎么关联上查询语句的? , 怎么能自动的给查询语句自动加上 LIMIT 条件的 ?

Principle

若依框架中的分页功能是通过使用 MyBatis 分页插件实现的。MyBatis 是一款流行的持久层框架,它提供了对数据库的访问和操作功能,并且支持插件扩展。

在若依框架中,当你调用 startPage() 函数时,它会利用 MyBatis 分页插件拦截 SQL 查询语句,并自动解析出分页相关的信息,如当前页码、每页显示的记录数等。然后,它会在查询语句中添加相应的 SQL 片段,实现分页查询。

具体而言,startPage() 函数会将分页信息存储在一个线程本地的 PageHelper 对象中。该对象使用了线程本地变量,确保每个线程独立维护自己的分页信息,避免了多线程并发时的混淆。

当执行数据库查询时,分页插件会拦截查询语句,根据 PageHelper 对象中保存的分页信息,动态生成对应的分页 SQL,并在查询数据库时应用该 SQL,从而只返回分页后的结果数据。

总结一下,若依框架的分页功能是通过 MyBatis 分页插件实现的。它利用了 MyBatis 拦截器机制,在查询语句执行前动态生成分页 SQL,从而在不需要前端传递分页数据注解的情况下,实现了简便的分页功能。

Reference

若依官网——分页实现
https://doc.ruoyi.vip/ruoyi/document/htsc.html#分页实现

若依框架---分页功能
https://blog.51cto.com/u_15949848/6056021

童小纯呀 若依框架---PageHelper分页(一) ~ (十五)
https://blog.51cto.com/search/user?uid=15939848&q=若依框架---PageHelper分页文章来源地址https://www.toymoban.com/news/detail-712027.html

到了这里,关于若依框架的startPage( )函数怎么自动关联查询SQL语句?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关联查询以及动态SQL

    1、多对一映射处理 场景模拟: 查询员工信息以及员工所对应的部门信息 多对一对应对象:即在多的一方的实体类的成员变量中需要加上一的一方的类型 1.1、级联方式处理映射关系 1.2、使用association处理映射关系 1.3、分步查询 ①查询员工信息 ②根据员工所对应的部门id查询

    2023年04月27日
    浏览(32)
  • SQL两表/多表关联查询--JOIN语句

    一、基础概念 SQL中的关联是通过JOIN实现的,JOIN有几种类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等。 二、INNER JOIN详解 INNER JOIN是最常用的关联方式之一,它 返回 两个表中共同存在的数据行 。 其语法格式如下: 下面是一个实际的例子: 以上代码可以

    2024年01月18日
    浏览(45)
  • 如果elasticsearch要实现在大于两个索引之间关联查询怎么实现

    Elasticsearch可以通过多种方式在多个索引之间进行关联查询。 一种常用的方法是使用关联查询(join query), 这需要在索引和类型中使用 _join 字段来存储关联关系。 另一种方法是使用查询时连接(query time join),使用过滤器上下文来连接不同索引中的文档。 还可以使用 Elasticsearch 的聚

    2024年02月08日
    浏览(51)
  • 若依框架ruoyi前后端实现自定义分页功能(ES分页查询)

    若依 ruoyi 框架主要针对 Sql 进行了分页集成,像平时别的一些数据库或者中间件的分页,则需要自己实现. 本文主要使用 ES 的分页查询为例,展示前后端的基本操作,原理可以类推到其他中间件分页查询上.

    2024年02月12日
    浏览(43)
  • MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询

    MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 com.github.dreamyoung mprelation 0.0.3.2-RELEASE 注解工具使用优缺点: 优点: 使用简单,通过在实体类上添加@OneToOne / @OneToMany / @ManyToOne / @ManyToM

    2024年01月20日
    浏览(46)
  • SQL函数、约束、查询、索引和事务

    目录 字符串函数 数值函数 日期函数 流程函数 多表查询 多表查询 -- 内连接 多表查询 -- 自连接  多表查询 -- 外连接 子查询  合并查询  all-any 蠕虫复制测试效率 表中数据去重   主键和约束 主键 约束 自增长约束 索引  事务  事务的使用 事务的隔离级别  存储引擎

    2023年04月09日
    浏览(39)
  • SQL 单行子查询 、多行子查询、单行函数、聚合函数 IN 、ANY 、SOME 、ALL

    单行子查询 子查询结果是 一个列一行记录 select a,b,c from table where a (select avg(xx) from table ) 还支持这种写法,这种比较少见 select a,b,c from table where (a ,b)=(select xx,xxx from table where col=‘000’ ) 多行子查询 子查询结果是 一个列多行记录 select a,b,c from table where a [ some | any |

    2024年02月14日
    浏览(42)
  • SQL-条件查询与聚合函数的使用

     🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页: 小小恶斯法克的博客 🎈该系列文章专栏: 重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏 📜 感谢大家的关注! ❤️ 目录 DQL-条件查询 1.语法

    2024年01月23日
    浏览(40)
  • 若依RuoYi-Cloud框架前端vue安装时报 core-js/modules/es.error.cause.js错误怎么解决?

    如下所示,新手安装若依RuoYi-Cloud框架前端vue时会报如下错误: ERROR Failed to compile with 7 errors This dependency was not found: core-js/modules/es.error.cause.js in ./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js, ./src/directive/permission/hasRole.js and 5 others To install it, you can run: npm install --save core

    2024年02月12日
    浏览(38)
  • SQL Server 数据表模糊查询(like 用法)以及查询函数

    在SQL Server Management Studio (SSMS) 中,进行模糊查询主要是通过使用 like 操作符来实现的。 like 操作符用于在 where 语句中搜索列中具有指定模式的数据。 我们在简单例子中来了解: % 通配符:表示任意数量的字符。 这个例子会选择 column_name 列中包含\\\"pattern\\\"这个词的所有记录,就

    2024年01月22日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包