若依框架---分页功能
继前几天我们学习若依管理系统中的代码生成工具,我们发现若依系统中还要很多值得学习的地方。今天我们来学习若依管理系统中的分页工具。
若依管理系统是前后端分离的(准确的说,若依有前后端分离版本)。
前端
若依前端的分页没有什么好说的,请求时分为pageNum与pageSize,使用前端分页组件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的呢?
相关文章:
若依框架---分页功能
继前几天我们学习若依管理系统中的代码生成工具,我们发现若依系统中还要很多值得学习的地方。今天我们来学习若依管理系统中的分页工具。 若依管理系统是前后端分离的(准确的说,若依有前后端分离版本)。 前端 若依前端的分页没…...
CHAPTER 3 Jenkins SVN GItlab
Jenkins SVN GItlab3.1 JenkinsSVN3.1.1 搭建SVN服务器1. 安装svn server2. 查看svn安装位置3. 创建版本库目录4. 创建svn版本库5. 配置修改6. 防火墙开启3690端口7. 启动SVN-server8. 客户端访问svn服务器3.1.2 测试脚本提交3.1.3 jenkins下载代码配置1. 安装Subversion插件2.…...
为什么Redis集群的最大槽数是16384个?
对于客户端请求的key,根据公式HASH_SLOTCRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作! 为什么有16384个槽? Redis集群并没有使用一致性hash而是引入了哈希槽的概念。Redis 集群有16…...
餐饮企业数据可视化大屏(智慧餐饮)
随着信息技术的深入发展,数据大屏的适用场景日益广泛,集工作汇报、实时监控和预测分析等功能于一身。 数据可视化的本质是视觉对话,数据可视化将数据分析技术与图形技术结合,清晰有效地将分析结果信息进行解读和传达。 当前很多餐…...
Kafka安装及zookeeper is not a recognized option问题解决
一安装JAVA JDK(略) 二安装ZooKeeper 下载安装包,建议bin版本 http://zookeeper.apache.org/releases.html#download解压并进入ZooKeeper,将“zoo_sample.cfg”重命名为“zoo.cfg” D:\Kafka\apache-zookeeper-3.7.1-bin\conf…...
leetcode刷题 | 关于二叉树的题型总结1
leetcode刷题 | 关于二叉树的题型总结1 文章目录leetcode刷题 | 关于二叉树的题型总结1题目连接完全二叉树插入器在每个树行中找最大值找树左下角的值二叉树的右视图二叉树剪枝题目连接 919. 完全二叉树插入器 - 力扣(LeetCode) 515. 在每个树行中找最…...
webpack新手入门
前言: 如何配置webpack呢? webpack概念有哪些呢? 怎么快速理解并使用webpack呢? 文章目录一. 什么是webpack二. 安装webpack三. webpack的五个核心概念四. webpack配置五. loader加载器1. css处理2. 处理文件(图片&…...
Redis中有常见数据类型
Redis的数据类型 string数据类型 string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何 数据,比如jpg图片或者序列化的对象 String类型是最基本的数据类型,一个redis中字符串value最多可以是512M r…...
【知识梳理】Go语言核心编程
基础知识 Go语言就是为了解决编程语言对并发支持不友好、编译速度慢、编程复杂这三个问题而诞生的 特点: Go语言选择组合思想,抛弃继承关系通过接口组合,自由组合成新接口,用接口实现层与层之间的解耦语言特性对比: package mainimport "fmt"func main() {fmt…...
Java中动态调用setter以及getter
0x00 前言 对于非专业程序员的安全人员来说,因为没有代码项目的积累,很多知识体系都不完善,所以有必要在一些常用的内容进行学习的总结。 在很多的调用链中都会用到**“动态调用setter以及getter”**这个知识点,比如经典的CB链&a…...
基于 NeRF 的 App 上架苹果商店!照片转 3D 只需一部手机,网友们玩疯了
前言 只用一部手机,现实中的 2D 照片就能渲染出 3D 模型? 没错,无需再手动上传电脑或安装激光雷达,苹果手机自带 App 就能生成 3D 模型。 这个名叫 Luma AI 的“NeRF APP”,正式上架 App Store 后爆火: 小…...
C++类与对象(中)
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:C 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:C类中一共有六个默认成员函…...
计算机软件技术基础复习
数据结构 文章目录数据结构第一节 数据结构的基本概念第二节 线性结构线性表顺序表和链表的特点实现循环队列第三节 非线性结构树操作系统操作系统概述进程和程序存储空间的组织数据库技术数据库设计软件技术软件生命周期第一节 数据结构的基本概念 数据结构:指相互…...
python爬虫--beautifulsoup模块简介
BeautifulSoup 的引入 我们学习了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就不是我们想要的结果了,而且对于一个网页来说,都有一定的特殊的结构和层级关系,而且很多标签都有 id 或 class 来对作区分&…...
Swfit Copy On Write 原理解析
1. Swift Copy On write 原理是什么 Swift 中的 Copy On Write (COW) 技术是一种内存优化技术,其原理是在需要修改数据时才进行拷贝,以避免不必要的内存消耗。 COW 的实现主要依赖于 Swift 中的结构体和类的特性。对于结构体而言,它是值类型…...
【面试题】经典面试题:让 a == 1 a == 2 a == 3 成立?
一、问题解析 if (a == 1 && a == 2 && a == 3) {console.log(Win) } 复制代码 如何打印除Win? 看到题目的第一眼,我是蒙蔽的.怎么可能会有如此矛盾的情况发生呢?就相当于一个人怎么可能即是小孩,又是成年人,还是老年人呢? 冷静下来,发现一些端倪。...
我是歌手-C语言
“我是歌手”是成名歌手之间的比赛节目,2轮比赛中观众支持率最低者出局。 这里我们假设有n个歌手进行了m轮比赛,请求出局者(m轮总分最低者)。 输入n个歌手(编号依次为1,2,......n)…...
Acwing---112.雷达设备
雷达设备1.题目2.基本思想3.代码实现1.题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超…...
SSJ-21A AC220V静态【时间继电器】
系列型号: SSJ-11B静态时间继电器;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间继电器 SSJ-42A静态时间继电器SSJ-41A静态时间继电器 SSJ-41B静态时间继电器SSJ-32B静态时间继电…...
m序列发生器——Verilog设计
引言 本篇文章利用Verilog编写一个m序列发生器模块。本文会给出具体的设计、测试源码。 设计说明 模块功能说明: 支持任意位宽的随机数生成;支持本原多项式配置;支持初始种子配置;设计环境: 设计语言:Verilog HDL 设计验证平台:MATLAB R20222a、Vivado 2018.3 m 序列…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
