Ruoyi-分页代码分析

文章目录

一、分页界面

 二、Ruoyi前端源代码

1.total初始值为0,需要后端返回数据的总条数

2.界面点击的页数,会触发getList函数

3.函数调用链:getList -> list -> request[axios] 

4.request:调用axios

5.url:调用后端的url

6.get:http请求方式对应为后端的@GetMapping

​7.XHR筛选前端与后端的交互

8.pageNum:第几页   ;pageSize:每页条数

9.预览后端响应数据,返回了数据,总数据条total为 11,是total赋值之后,通过前端组件pagination显示出来的结果。

三、后端代码

1.RequestMapping-->GetMapping 为响应前端的HTTP请求

2.startPage()为分页函数,分页调用需先执行这个函数

3.getDataTable(list)返回的参数需要执行此函数的包装

4.函数startPage() 和getDataTable()

5.可以通过list,使total 值大于list 长度,因为类PageInfo 继承类PageSerializable,类PageInfo 调用getTotal 为父类PageSerializable 函数。

6.total被赋值的过程:

①找到this.total = ,说明在构造父类PageSerializable 时,初始化了total。

②PageInfo(list) 就是在构造PageInfo 对象。

③构造流程为new PageInfo(list) -> this(list, DEFAULT_NAVIGATE_PAGES) -> super(list);  其中super 为类PageSerializable

7.实现total 的值比List 里的元素个数大

①类Page 继承类List

②selectPostList 语句返回的list 实际类型为Page [经过MyBatis 框架处理返回]

③类Page 含有属性total 保存数据总条数

8.selectPostList对应xml,没有使用pageNum 和pageSize 删选数据,返回的是所有数据。 

9.Log输出如下

10.MyBatis 通过startPage 中的函数PageHelper.startPage 做到了对SQL 语句的修改

11.得到total


一、分页界面

 二、Ruoyi前端源代码

1.total初始值为0,需要后端返回数据的总条数

2.界面点击的页数,会触发getList函数

3.函数调用链:getList -> list -> request[axios] 

 4.request:调用axios

5.url:调用后端的url

6.get:http请求方式对应为后端的@GetMapping

 7.XHR筛选前端与后端的交互

8.pageNum:第几页   ;pageSize:每页条数

9.预览后端响应数据,返回了数据,总数据条total为 11,是total赋值之后,通过前端组件pagination显示出来的结果。

三、后端代码

1.RequestMapping-->GetMapping 为响应前端的HTTP请求

2.startPage()为分页函数,分页调用需先执行这个函数

3.getDataTable(list)返回的参数需要执行此函数的包装

 4.函数startPage() getDataTable()

5.可以通过list,使total 值大于list 长度,因为类PageInfo 继承类PageSerializable,类PageInfo 调用getTotal 为父类PageSerializable 函数。

6.total被赋值的过程:

①找到this.total = ,说明在构造父类PageSerializable 时,初始化了total。

②PageInfo(list) 就是在构造PageInfo 对象。

③构造流程为new PageInfo(list) -> this(list, DEFAULT_NAVIGATE_PAGES) -> super(list);  其中super 为类PageSerializable

 

7.实现total 的值比List 里的元素个数大

①类Page 继承类List

②selectPostList 语句返回的list 实际类型为Page [经过MyBatis 框架处理返回]

③类Page 含有属性total 保存数据总条数

8.selectPostList对应xml,没有使用pageNum 和pageSize 删选数据,返回的是所有数据。 ​​​​​​​

​​​​​​​

 

9.Log输出如下

SQL 被MyBatis 拦截改变了,selectOperLogList 函数对应两句SQL:一句查询表的总行数[count(0)];一句对查询数据做了行数输出限制[LIMIT 10]

对应前端参数pageNum=1&pageSize=10

count(0):表数据的总行数

LIMIT 有两种形式:①LIMIT num:数据的前num 个②LIMIT offset,num:从offset 偏移位置开始的num 个数据

​​​​​​​

 10.MyBatis 通过startPage 中的函数PageHelper.startPage 做到了对SQL 语句的修改

11.得到total

通过MyBatis 修改SQL 语句,多请求一句SQL 语句:

SELECT count(0) FROM sys_oper_log 返回了总行数给到Page 对象的total 成员。然后通过子类Page 强转父类List 对象,访问其成员total 值,赋值给PageInfo 父类成员total,即this.total = ((Page)list).getTotal();得到total 是表格所有数据的总行数。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值