当前位置: 首页 > news >正文

若依框架---分页功能

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

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

前端

若依前端的分页没有什么好说的,请求时分为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 的呢?

相关文章:

  • ESP8266 + STC15基于AT指令通过TCP通讯协议控制IO状态
  • 【H5】html实现微信授权登陆
  • Lesson 6.3 正则化与 sklearn 逻辑回归参数详解
  • 【C语言】指针基础(详细知识梳理)
  • 二叉搜索树——BinarySearchTree
  • 【Python】Numpy数值积分
  • 【Spring】Bean的生命周期详解
  • 【虚拟仿真】Unity3D中实现InputField组件表格Tab或者Enter换行实现
  • 【微服务】ES使用实战·黑马旅游(五)
  • JavaScript(三)-全面详解(学习总结---从入门到深化)
  • Windows Server 2022 Install Sql Server 2022
  • Openharmony的用户态应用通过HDF框架驱动消息机制实现的通信实例
  • 程序员为什么要写技术博客?都在哪些平台呢?
  • OpenStack haproxy Statistics Report统计报告怎么在哪里,haproxy Dashboard怎么打开
  • python GUI(Tkinter)
  • 【自学Python】Python字符串首字母大写
  • Java文档搜索引擎
  • 《小猫猫大课堂》三轮4——自定义类型(位段,枚举,联合)(内含通讯录)
  • JMeter本地环境搭建
  • 测试开发之Django实战示例 第一章 创建博客应用
  • 3月赴美外国游客数量加速下滑
  • 东北三省,十年少了一个“哈尔滨”
  • 申花迎来中超三连胜,这一次终于零封对手了
  • 山东临沂市市长张宝亮履新市委书记
  • 南华期货递表港交所,冲刺第二家“A+H”股上市期货公司
  • 长三角铁路五一假期预计发送旅客2880万人次,同比增6%