继前几天我们学习若依管理系统中的代码生成工具,我们发现若依系统中还要很多值得学习的地方。今天我们来学习若依管理系统中的分页工具。

若依管理系统是前后端分离的(准确的说,若依有前后端分离版本)。

前端

若依前端的分页没有什么好说的,请求时分为pageNumpageSize,使用前端分页组件Pagination(这个组件我们之前在花裤衩的vue-element-admin中也遇到过),代码如下所示:

<!-- 分页组件-->
<pagination:total="total":page.sync="queryParams.pageNum":limit.sync="queryParams.pageSize"@pagination="fetchData"
/>query: {keyword: undefined,// otherquery.....pageNum: 1,pageSize: 10
},
result: { // 请求结果total: 0,rows: []
}// 后台方法,传入参数 获取结果
api(this.queryParams).then(response => {this.result = response;}
);

后端分页

后端的分页很有意思,我们先来看看后端接口中的分页代码。

我们抓取若依前端:系统管理->日志管理->操作日志接口,经过浏览器F12调试,我们可以发现其接口地址为:

/monitor/operlog/list?pageNum=1&pageSize=10

我们在后台查找对应接口发现其位于com.ruoyi.web.controller.monitor.SysOperlogController下的list方法。方法代码如下所示:

    @PreAuthorize("@ss.hasPermi('monitor:operlog:list')")@GetMapping("/list")public TableDataInfo list(SysOperLog operLog){startPage();List<SysOperLog> list = operLogService.selectOperLogList(operLog);return getDataTable(list);}

奇怪的是,我们并没有发现分页参数的获取与解析,那么后端到底是如何实现分页的呢?

这个接口有三个特点,

一是返回值类型为TableDataInfo

二是接口第一行代码startPage()

三是接口最后一句:getDataTable(list)

首先,我们先来看看 TableDataInfo 的数据结构。

/*** 表格分页数据对象* * @author ruoyi*/
public class TableDataInfo implements Serializable
{private static final long serialVersionUID = 1L;/** 总记录数 */private long total;/** 列表数据 */private List<?> rows;/** 消息状态码 */private int code;/** 消息内容 */private String msg;// 剩余的构造器与setter,getter方法不贴了}

我们可以看到,数据的类型与前端是匹配的,那么这个数据又是如何在接口中构造的呢?

关键代码 startPage() 时发生了什么?接口最后一句 genDataTable(list) 又是如何将一个list转换为 TableDataInfo 的呢?

若依框架---分页功能相关推荐

  1. think php ajax分页,thinkPHP5框架实现基于ajax的分页功能示例

    本文实例讲述了thinkPHP5框架实现基于ajax的分页功能.分享给大家供大家参考,具体如下: 最近一个页面的选项卡又牵扯到ajax分页,所以研究了一下tp5的ajax分页使用方法 首先看一下tp5 ...

  2. php tp框架分页源代码,ThinkPHP3.2框架自带分页功能实现方法示例

    本文实例讲述了ThinkPHP3.2框架自带分页功能实现方法.分享给大家供大家参考,具体如下: 1.前端-分页代码: {$page} 2.创建分页样式:如page.css 并将以下代码复制到该文件中 ...

  3. SpringBoot 集成FluentMyBatis 框架之集成分页功能

    本文基于上一篇:SpringBoot 集成FluentMyBatis 框架之完善 SpringBoot 集成FluentMyBatis 框架之集成分页功能 FluentMyBatis 官方分页 官方提 ...

  4. vue技术框架下手机端移动上拉实现分页功能

    vue技术框架下手机端移动上拉实现分页功能 基于手机端项目实战总结而来 1.业务场景 2.前端优化思路 3.具体实现思路 4.把返回的数据首次取N条渲染页面 5.获取滚动条的当前位置 6.获取当前可视 ...

  5. MVC框架实现分页功能

    导航 1.数据库 2.控制器 3.视图 1.数据库 USE [master] GO /****** Object: Database [RbacDB] Script Date: 2020/6/2 23 ...

  6. 转:mybatis - 分页功能

    本文转自http://www.cnblogs.com/jcli/archive/2011/08/09/2132222.html mybatis高级应用系列一:分页功能 Mybatis3.0出来已有段时 ...

  7. mybatis-generator 插件扩展,生成支持多种数据库的分页功能

    2019独角兽企业重金招聘Python工程师标准>>> 背景: 在使用mybatis的过程中,考虑到整合的框架在后期使用的过程中,有可能是需要兼容到多种数据库的,在这种前提条件下,完 ...

  8. [Beego] [bootstrap-paginator]实现分页功能

    说明 在开发中分页功能几乎是必不可少的一项功能,使用beego框架开发时,就遇到了分页功能的需求.可能是之前版本并不支持,我发现有很多自己实现的分页功能的封装,在阅读了官方源码时,我发现了分页功能的封 ...

  9. Spring Boot入门系列(十六)整合pagehelper,一秒实现分页功能!

    之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.接下来要说一说Mybatis 的分页 ...

最新文章

  1. 中国高校最强超算!上算引力波,下算光量子
  2. python3下载教程-Python3完全零基础入门精讲 全套视频教程
  3. 阿里 双11 同款,流量防卫兵 Sentinel go 源码解读
  4. python处理字符串数组慢_Python字符串处理 - str/bytes
  5. 在没有Docker容器的Ubuntu上安装SQL Server 2019
  6. 稀疏贴图 SparseTexture
  7. mysql中explain的详细解释
  8. NLP --- 文本分类(基于LDA的隐语意分析详解)
  9. angular中的$q服务
  10. IDEA external library 这个里面是空的怎么办
  11. 为知笔记 | 3 分钟创建格式美美的笔记
  12. android 360短信拦截,Android版360卫士更威武
  13. 怎么把PDF转换成PPT
  14. Mybatis学习【2】
  15. 解决方案模板(标题立问题简述)
  16. 湘潭大学研究生计算机科学,湘潭大学计算机研究生难考么
  17. Mask2Former源码解析
  18. 计算机课作业怎么向老师提交,计算机基础课程作业布置与批改方式
  19. python 点到直线的距离
  20. 机器学习中的特征缩放(feature scaling)浅谈

热门文章

  1. 【bat批处理脚本命令】bat脚本命令的基本使用(保姆级图文+实现代码)
  2. QIIME 2教程. 11元数据Metadata(2021.2)
  3. Python,批量删除txt文本指定行
  4. 安全加密 - 安全认证 EAL,CC
  5. PPI是什么?pixels per inch像素密度是什么?PPI如何计算?
  6. fastadmin 新手使用教程
  7. 免费撸阿里云服务器活动(限新用户)
  8. 2020保研夏令营回顾--清华网研院+清华深研院
  9. PDF转Word+转Html+英文论文轻松翻译+屏幕取词
  10. (1)-Halcon入门学习路线