基于ruoyi的数据分页源码分析

文章讲述了前端在RuoYi后台管理系统中,通过addDataRange方法实现日期范围搜索,区分了在分页和不分页场景下的操作。后端部分介绍了startPage和getDataTable方法,包括合理化分页机制,以及与前端参数pageNum和pageSize的对应关系。
摘要由CSDN通过智能技术生成

前端部分

在这里我所使用的部分是ruoyi后台系统管理中的登录日志部分
在这里插入图片描述

前端源码

其中这部分首先会先从这个getList里面先从后端获取到当前表单中的数据,然后用vue.js方法中的sync的方法进行双向绑定和监听将数据实时传给子组件。
在这里插入图片描述

在这里插入图片描述

前端获取数据的方法

此处的addDataRange方法在main.js中定义在全局中所以可以直接使用
在这里插入图片描述

addDAteRange方法

详细请看注释,这段代码的主要做用其实就是为了简化在搜索时处理日期范围的逻辑通过传入不同的参数,可以在参数对象中设置不同的属性名,并添加相应的日期范围。这在涉及到搜索条件中的日期选择时非常有用。
在这里插入图片描述

此搜索方法写在分页中的区别和不写在分页中的区别

此方法写在分页中是为了在点击下一页的时候再次进行数据的搜索或者说是筛选,如果说此方法没有写在这里面那么每当我点击下一页的时候就需要再点击一次搜索才会进行筛选,否则会全部数据都显示出来
在这里插入图片描述

这边是已经选好的时间
在这里插入图片描述
如果说是不选择的话那么就一直是undefind,那么如果在点击分页的时候如果说不同时先调用此方法,那么就会将所有的数据都调用出来。
在这里插入图片描述

路由

当addDataRange方法返回一个正确的search之后会调用list方法
在这里插入图片描述
在这边会把url以及他的请求方法全都包装成一个函数
在这里插入图片描述

query作为请求的参数传递给服务器。就是为了获取到登录日志列表
在这里插入图片描述
以上所有的东西都会包装给request然后对后端进行请求。

后端部分

这是后端部分请求get的代码,==@RequestMapping(“/monitor/logininfor”)==意味着意味着在访问该控制器的任何方法时,都需要在 URI 中包含 “/monitor/logininfor”
在这里插入图片描述

startPage()方法讲解

从下图可以找到进入startPage方法,也就是图二,里面先获取到当前前端页面的信息之后,再获取到相应的页数以及数据量;然后通过pageDomain.getOrderBy()获取到对象的排序信息然后再通过escapeOrderBySql做出相应的排序处理。

在这里插入图片描述
注意:这边的Boolean reasonable = pageDomain.getReasonable();
做了一个合理化分页的工作。
合理化分页(举例):假设你的总记录数是 100,每页显示 10 条记录。如果用户请求第 11 页,启用合理化分页时,PageHelper 会将页码调整为第 10 页(最后一页),而不是抛出异常。这可以提高用户体验,避免因为页码超出范围而导致的错误(如果说不需要这个合理化分页可以在 MyBatis 的分页插件 PageHelper 中,找到 reasonable 的配置项,把true改成false就行)
在这里插入图片描述
合理化分页代码:
在这里插入图片描述
这一句话其实就是为了用于查询登录信息的列表
在这里插入图片描述

getDataTable()方法讲解

此代码是先创建一个TableDataInfo的实列对象rspData,获取到的数据是图中的list,然后就是成功后返回一个成功的状态码以及成功的信息,以及将相应的数据放入rspData中。
在这里插入图片描述
此处是TableDataInfo类
在这里插入图片描述
this 是一个关键字,用于引用当前对象,其实在这里构造了两个方法:
public PageInfo(List list)这是一个构造方法,接受一个列表作为参数。

public PageInfo(List list, int navigatePages)这是另一个构造方法,接受两个参数,一个是列表,另一个是导航页数。而 8 是硬编码的默认导航页数。

在这里插入图片描述
构造方法是在对象实例化(创建对象)的时候自动调用的。当使用 new PageSerializable(…) 语句创建 PageSerializable 对象时,构造方法就会执行。在这个构造方法内部,会完成对象的初始化工作。所以在构造方法的时候就对total进行了一个初始化。
在这里插入图片描述

前端参数为pageNum=2&pageSize=10 请求对应的后端Log

前端打印:
在这里插入图片描述
后端打印:在这里插入图片描述
在这里我们可以看到后端部分打印了一堆值,意思是从名为 sys_logininfor 的表中选择列 info_id, user_name, ipaddr, login_location, browser, os, status, msg, login_time 的数据。
结果按 info_id 降序排列。LIMIT ?, ? 表示分页查询,其中 ? 是占位符,会被具体的参数值替代,这个具体的值其实就是你传过去的pageNum=2和pageSize=10 ,会被这两个值代替。

引用中提到,RUOYI定制分页查询可以通过在控制器中创建新的查询方法,并调用服务层的查询方法来实现。在控制器中可以设置请求地址和请求参数,然后获取返回值并进行相应的处理。具体步骤如下: 1. 在控制器中创建一个新的查询方法,可以参考已有的查询方法并进行相应的修改。 2. 设置请求地址和请求参数,确保与前端页面的交互正常。 3. 调用服务层的查询方法,并获取返回值。 4. 根据返回值进行相应的处理,例如判断返回值是否为空,如果为空则返回提示信息;如果不为空,则将数据处理成相应的格式并返回给前端页面。 同时,引用中提到可以在方法体中添加判断来实现提交按钮的功能。可以通过判断输入的数据是否为0,来决定输出成功的提示信息或是删除数据。引用中的测试数据可以用来进行测试和验证。 综上所述,可以根据RUOYI框架的要求和需要,定制分页查询功能,并根据输入的数据进行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [实战进阶项目:《若依》码云知名开源项目·学习拓展笔记](https://blog.csdn.net/qq_44850489/article/details/110202880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [从零搭建若依(Ruoyi-Vue)管理系统(10)--Spring Security核心内容梳理](https://blog.csdn.net/qq_37132495/article/details/116274034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值