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

若依分页的逻辑分析

看了一些网上的感觉都是 听君一席话, 如听一席话.

下面开始简单的分析一下, 随便找一个接口, 看一下前端的请求地址:

请求方式: GET

请求地址:
http://localhost/dev-api/system/role/list?pageNum=1&pageSize=10

后端接口:

    @PreAuthorize("@ss.hasPermi('system:role:list')")@GetMapping("/list")public TableDataInfo list(SysRole role) {startPage();List<SysRole> list = roleService.selectRoleList(role);return getDataTable(list);}

跟一下 startPage();

    public static void startPage(){PageDomain pageDomain = TableSupport.buildPageRequest();Integer pageNum = pageDomain.getPageNum();Integer pageSize = pageDomain.getPageSize();String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());Boolean reasonable = pageDomain.getReasonable();PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);}

看一下 buildPageRequest 这个方法做了什么

public static PageDomain getPageDomain()
{PageDomain pageDomain = new PageDomain();pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));return pageDomain;
}

简单处理一下常量:

public static PageDomain buildPageRequest() {PageDomain pageDomain = new PageDomain();// 通过 Request 对象来获取参数值HttpServletRequest request = RequestHolder.getRequest();pageDomain.setPageNum(StringUtils.isEmpty(request.getParameter("pageNum")) ? 1 : Integer.parseInt(request.getParameter("pageNum")));pageDomain.setPageSize(StringUtils.isEmpty(request.getParameter("pageSize")) ? 10 : Integer.parseInt(request.getParameter("pageSize")));pageDomain.setOrderBy(request.getParameter("orderBy"));pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));return pageDomain;
}

到这里其实就明白了. 底层的处理直接从 HttpServletRequest 这个对象中获取 pageNumpageSize.

所以可以猜想如果前端传了分页这两个值后端在接口中没有接收, 也是可以实现分页的效果的. 测试如下: 即

    @PreAuthorize("@ss.hasPermi('system:role:list')")@GetMapping("/list")public TableDataInfo list() { // 请求参数设置为空startPage();List<SysRole> list = roleService.selectRoleList(new SysRole());return getDataTable(list);}

注: getDataTable 的作用是封装参数并返回 TableDataInfo对象

相关文章:

若依分页的逻辑分析

看了一些网上的感觉都是 听君一席话, 如听一席话. 下面开始简单的分析一下, 随便找一个接口, 看一下前端的请求地址: 请求方式: GET 请求地址: http://localhost/dev-api/system/role/list?pageNum1&pageSize10 后端接口: PreAuthorize("ss.hasPermi(system:role:li…...

JetBrains学生申请

目录 JetBrains学生免费授权申请 IDEA安装与使用 第一个JAVA代码 1.利用txt文件和cmd命令运行 2.使用IDEA新建项目 JetBrains学生免费授权申请 本教程采用学生校园邮箱申请&#xff0c;所以要先去自己的学校申请校园邮箱。 进入JetBrains官网 点击立即申请&#xff0c;然…...

【算法方法总结·五】链表操作的一些技巧和注意事项

【算法方法总结五】链表操作的一些技巧和注意事项 【算法方法总结一】二分法的一些技巧和注意事项【算法方法总结二】双指针的一些技巧和注意事项【算法方法总结三】滑动窗口的一些技巧和注意事项【算法方法总结四】字符串操作的一些技巧和注意事项【算法方法总结五】链表操作…...

langchain系列(终)- LangGraph 多智能体详解

目录 一、导读 二、概念原理 1、智能体 2、多智能体 3、智能体弊端 4、多智能体优点 5、多智能体架构 6、交接&#xff08;Handoffs&#xff09; 7、架构说明 &#xff08;1&#xff09;网络 &#xff08;2&#xff09;监督者 &#xff08;3&#xff09;监督者&…...

侯捷 C++ 课程学习笔记:深入理解智能指针

文章目录 每日一句正能量一、引言二、智能指针的核心概念&#xff08;一&#xff09;std::unique_ptr&#xff08;二&#xff09;std::shared_ptr&#xff08;三&#xff09;std::weak_ptr 三、学习心得四、实际应用案例五、总结 每日一句正能量 如果说幸福是一个悖论&#xff…...

访问不了 https://raw.githubusercontent.com 怎么办?

修改 Hosts 文件&#xff08;推荐&#xff09;​ 原理&#xff1a;通过手动指定域名对应的 IP 地址&#xff0c;绕过 DNS 污染。 步骤&#xff1a; 1、访问 IPAddress.com&#xff0c;搜索 raw.githubusercontent.com&#xff0c;获取当前最新的 IPv4 地址&#xff08;例如 1…...

大模型工程师学习日记(十五):Hugging Face 模型微调训练(基于 BERT 的中文评价情感分析)

1. datasets 库核心方法 1.1. 列出数据集 使用 d atasets 库&#xff0c;你可以轻松列出所有 Hugging Face 平台上的数据集&#xff1a; from datasets import list_datasets# 列出所有数据集 all_datasets list_datasets()print(all_datasets)1.2. 加载数据集 你可以通过 l…...

Codeforces Round 258 (Div. 2) E. Devu and Flowers 生成函数

题目链接 题目大意 有 n n n ( 1 ≤ n ≤ 20 ) (1\leq n \leq 20) (1≤n≤20) 个花瓶&#xff0c;第 i i i 个花瓶里有 f i f_i fi​ ( 1 ≤ f i ≤ 1 0 12 ) (1\leq f_i \leq 10^{12}) (1≤fi​≤1012) 朵花。现在要选择 s s s ( 1 ≤ s ≤ 1 0 14 ) (1\leq s \leq 1…...

MySQL-----SELECT语句-查询

目录 SELECT语句-查询 1.格式 2.操作 3.算数表达式 SELECT语句-查询 1.格式 &#x1f4d6;简单查询: 格式: select 字段1,字段n from 表名&#xff1b; 起别名: 通过在字段后添加 as 别名 as可以省略 改变表头 eg: select username "用户名",password as "…...

子数组、子串系列(典型算法思想)—— OJ例题算法解析思路

一、53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; class Solution { public:int maxSubArray(vector<int>& nums) {// 1. 创建 dp 表// dp[i] 表示以第 i 个元素结尾的子数组的最大和int n nums.size();vector<int> dp(n…...

Windows编程----进程的当前目录

进程的当前目录 Windows Api中有大量的函数在调用的时候&#xff0c;需要传递路径。比如创建文件&#xff0c;创建目录&#xff0c;删除目录&#xff0c;删除文件等等。拿创建文件的CreateFile函数做比喻&#xff0c;如果我们要创建的文件路径不是全路径&#xff0c;那么wind…...

AVL树的介绍及实现

文章目录 &#xff08;一&#xff09;AVL的概念&#xff08;二&#xff09;AVL树的实现1.AVL树的结构2.AVL树的插入3.AVL树的查找 &#xff08;三&#xff09;检查一棵树是否是AVL树 &#xff08;一&#xff09;AVL的概念 AVL树是一棵高度平衡的二叉搜索树&#xff0c;通过控制…...

hadoop第3课(hdfs shell常用命令)

一、Hadoop FS 基础操作命令 1. 查看帮助 hadoop fs -help [命令名] # 查看具体命令的帮助文档 # 示例&#xff1a; hadoop fs -help mkdir2. 目录操作 hadoop fs -mkdir /path # 创建目录 hadoop fs -mkdir -p /path/a/b # 递归创建多级目录 hadoop fs -rmdir …...

为什么Java不采用引用传递方式

Java不采用引用传递方式,而是统一采用值传递机制,这一设计决策背后有多种原因。 1. 语言设计的简洁性与一致性 Java的设计目标之一是保持语言的简洁性和一致性。如果同时支持值传递和引用传递,可能会导致语言复杂度增加,使得开发者难以理解和使用。通过统一采用值传递机制…...

【RAG】文本分割的粒度

文本分隔 可能存在的问题 粒度太大可能导致检索不精准粒度太小可能导致信息不全面问题的答案可能跨越两个片段 # 创建一个向量数据库对象 vector_db MyVectorDBConnector("demo_text_split", get_embeddings) # 向向量数据库中添加文档 vector_db.add_documents(p…...

Qt信号与槽机制实现原理

Qt 的信号和槽机制是其核心特性之一&#xff0c;用于实现对象间的松耦合通信。以下是对其实现原理的详细分析&#xff1a; 1. 元对象系统&#xff08;Meta-Object System&#xff09; Q_OBJECT 宏与 moc Qt 通过元对象系统实现反射能力。声明 Q_OBJECT 宏的类会由 moc&#xf…...

Vue3 中 Computed 用法

Computed 又被称作计算属性&#xff0c;用于动态的根据某个值或某些值的变化&#xff0c;来产生对应的变化&#xff0c;computed 具有缓存性&#xff0c;当无关值变化时&#xff0c;不会引起 computed 声明值的变化。 产生一个新的变量并挂载到 vue 实例上去。 vue3 中 的 com…...

《今日AI-人工智能-编程日报》

一、AI行业动态 AI模型作弊行为引发担忧 最新研究表明&#xff0c;AI在国际象棋对弈中表现出作弊倾向&#xff0c;尤其是高级推理模型如OpenAI的o1-preview和DeepSeek的R1模型。这些模型通过篡改代码、窃取棋路等手段试图扭转战局&#xff0c;且作弊行为与其智能水平正相关。研…...

快速生成viso流程图图片形式

我们在写详细设计文档的过程中总会不可避免的涉及到时序图或者流程图的绘制&#xff0c;viso这个软件大部分技术人员都会使用&#xff0c;但是想要画的好看&#xff0c;画的科学还是比较难的&#xff0c;现在我总结一套比较好的方法可以生成好看科学的viso图(图片格式)。主要思…...

centos7关闭与开启图形界面

centos7关闭图形界面 systemctl set-default multi-user.target rebootcentos7开启图形界面 systemctl set-default graphical.target reboot...

linux学习(十)(磁盘和文件系统(索引节点,文件系统,添加磁盘,交换,LVM公司,挂载))

Linux 磁盘文件系统 Linux 使用各种文件系统来允许我们从计算机系统的硬件&#xff08;例如磁盘&#xff09;存储和检索数据。文件系统定义了如何在这些存储设备上组织、存储和检索数据。流行的 Linux 文件系统示例包括 EXT4、FAT32、NTFS 和 Btrfs。 每个文件系统都有自己的…...

vulkanscenegraph显示倾斜模型(5.2)-交换链

前言 在 VulkanSceneGraph&#xff08;VSG&#xff09;中&#xff0c;vsg::Window 类对窗口进行了高层次的封装&#xff0c;为开发者提供了便捷的窗口管理接口。在上一篇文章中&#xff0c;我们探讨了 VkInstance、VkSurfaceKHR、VkPhysicalDevice 和 VkDevice 的创建过程&…...

【极光 Orbit•STC8A-8H】03. 小刀初试:点亮你的LED灯

【极光 Orbit•STC8H】03. 小刀初试&#xff1a;点亮你的 LED 灯 七律 点灯初探 单片方寸藏乾坤&#xff0c;LED明灭见真章。 端口配置定方向&#xff0c;寄存器值细推敲。 高低电平随心控&#xff0c;循环闪烁展锋芒。 嵌入式门初开启&#xff0c;从此代码手中扬。 摘要 …...

实现一键不同环境迁移ES模板

实现概述&#xff1a; 1、查询环境A模板信息 2、获取模板信息值转换 3、同步保存至环境B package com.jayce.boot.route.common.util;import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.Lists; import com.jayce.boot.route.common.util.…...

Nacos学习笔记-占位符读取其他命名空间内容

Nacos当前命名空间下的配置文件需要跨命名空间读取其他配置文件的内容。可以先通过Nacos提供的API接口获取配置文件内容&#xff0c;然后解析数据将其放入环境的PropertySource中。 相关依赖包 <!-- Nacos依赖包 --> <dependency><groupId>com.alibaba.clo…...

OSPF报文分析

OSPF报文分析 组播地址 224.0.0.0&#xff5e;224.0.0.255为预留的组播地址&#xff08;永久组地址&#xff09;&#xff0c;地址224.0.0.0保留不做分配&#xff0c;其它地址供路由协议使用&#xff1b; 224.0.1.0&#xff5e;238.255.255.255为用户可用的组播地址&#xff08;…...

MySql性能(9)- mysql的order by的工作原理

全字段排序rowid排序全字段排序和rowid排序 3.1 联合索引优化 3.2 覆盖索引优化优先队列算法优化建议 5.1 修改系统参数 5.2 优化sql 1. 全字段排序 CREATE TABLE t ( id int(11) NOT NULL,city varchar(16) NOT NULL, name varchar(16) NOT NULL, age int(11) NOT NULL,addr v…...

死锁问题分析工具

使用 gdb 调试 gdb ./your_program (gdb) run (gdb) thread apply all bt还可以分析pthread_mutex内部&#xff0c;查看owen字段分析哪个线程占用的锁&#xff0c;一个可能的 pthread_mutex 内部结构可以大致表示为&#xff1a; typedef struct pthread_mutex_t {int state; …...

爬虫案例七Python协程爬取视频

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python协程爬取视频 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 爬虫案例七协程爬取视频 提示&#xff1a;以下是本篇文章正文…...

智慧城市智慧社区项目建设方案

一、项目背景 在全球化进程加速的今天&#xff0c;城市化问题日益凸显&#xff0c;传统的城市管理模式已难以满足现代社会对高效、智能化管理的需求。智慧城市和智慧社区的概念应运而生&#xff0c;其核心目标是通过信息技术手段&#xff0c;提升城市资源的利用效率&#xff0…...