DBAPI 实现分页查询的两种方法

背景

在进行分页查询时,用户通常需要传入当前页码 pageNo 和每页显示的条数 pageSize 参数。根据这两个参数,我们可以从数据库中查询出当前页的数据。以 MySQL 为例,分页查询的 SQL 语句如下:

select * from t_user limit 30, 10

这里的 limit 30, 10 表示从第 31 条记录开始,查询 10 条记录。

参数动态计算

在 DBAPI 中,参数注入 SQL 的写法如下:

select * from t_user limit #{offset}, #{pageSize}

而这里的 offset 参数每次都要根据 pageNopageSize 动态计算,具体公式为 offset = (pageNo - 1) * pageSize

为了解决这个动态计算的需求,DBAPI 提供了两种实现方案:第一种是使用参数处理插件,第二种是使用动态 SQL 中的 bind 标签。

方案 1 - 参数处理插件

  1. 访问插件市场,下载分页插件,上传到 DBAPI 的 extlib 目录或者 lib 目录下,重启 DBAPI 服务。

  1. 创建 API,添加参数 pageNopageSize

    API 必须至少包含这两个参数,且必须是bigint类型,pageNo 表示当前第几页,pageSize 表示每页显示的条数。

  1. SQL 编写

    SQL 中使用参数 offsetpageSizeoffset 表示查询记录的开始位置,pageSize 表示每页显示的条数。

    select * from student limit #{offset}, #{pageSize}
    

  1. 全局插件-参数处理 中选择 分页插件

    插件参数不用填写,为非必填项。

    使用此插件,系统会自动生成一个新的参数 offset,值为 (pageNo - 1) * pageSize

  2. 测试

    保存 API,请求测试可以看到分页成功。


注意此插件在个人版 4.0.16 及以上、企业版 4.1.10 及以上版本支持。

方案 2 - 动态 SQL 中的 bind 标签

  1. 创建 API,添加参数 pageNopageSize

    API 必须至少包含这两个参数,且必须是bigint类型,pageNo 表示当前第几页,pageSize 表示每页显示的条数。

  1. SQL 编写

    SQL 中使用参数 offsetpageSizeoffset 表示查询记录的开始位置,pageSize 表示每页显示的条数。

    DBAPI 支持类似 mybatis 的动态 SQL 标签语法, offset使用 <bind> 标签创建出来。

    <bind name="offset" value="(pageNo - 1) * pageSize" />
    select * from student limit #{offset}, #{pageSize}
    

  1. 测试

    保存 API,请求测试可以看到分页成功。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93348.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93348.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/93348.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第五天上课 SSLPolicy策略和Network Discovery技术

SSL Policy场景1:拥有自家服务器的私钥&#xff0c;解密访问自家服务器的ssl流量场景2: 内部用户访问互联网的ssl流量&#xff0c;需要解密并重签名Correlation and Compliance相关性与合规性配置相关性与合规性策略&#xff0c;在10.1.1.0/24网络中&#xff0c;当通过Network …

进阶07:C#与通用OPC UA通信范例

本节目标&#xff1a; 1&#xff09;安装软件&#xff0c;搭建虚拟OPC UA服务器&#xff1b; 2&#xff09;使用UaExpert&#xff0c;读取OPC UA服务器中的变量&#xff1b; 3&#xff09;编写Winform程序&#xff0c;读写服务器中变量值&#xff0c;创建订阅触发事件&#…

大模型微调学习笔记(基于讯飞星辰MaaS速学版)

文章目录参考资料说明大模型微调入门微调简介微调步骤数据准备模型选择训练方式效果评估模型部署大模型微调&#xff08;基于讯飞星辰Maas&#xff09;构建数据集方法1&#xff1a;预置数据集方法2&#xff1a;创建数据集数据辅助工具数据集划分模型微调数据配置参数配置模型部…

[CSS]让overflow不用按shift可以滚轮水平滚动(纯CSS)

前言 我不爽前端无法直接滚轮横向滚动很久了 明明浏览器可以直接判断 x滚动且y不滚动的时候滚轮事件可以直接操作横向滚动 这个是我探究出来的方法,尤其适合这种很多很多小tag的情况解析 原理是将竖向排列的overflow旋转成横向,实际操作的还是竖向overflow.继而实现鼠标滚轮不用…

截稿倒计时 TrustCom‘25大会即将召开

会议资讯IEEE TrustCom-2025&#xff08;第24届IEEE计算与通信领域信任、安全与隐私国际会议&#xff09;是一个展示可信计算、通信、网络和机器学习领域前沿成果的学术平台。会议聚焦计算机系统、网络及人工智能在信任、安全、隐私、可靠性、可依赖性、生存性、可用性和容错性…

Day4.AndroidAudio初始化

1.AudioServer初始化 AudioServer 是 Android 音频系统的核心服务&#xff0c;负责管理音频硬件资源、音频策略调度、跨进程音频通信等核心功能。它由 Init 进程启动&#xff0c;是系统核心服务之一&#xff0c;直接影响音频播放、录音、音效处理等功能的正常运行。 1.1AudioSe…

OSPF 协议(多区域)

1. OSPF 单区域存在的问题① LSDB庞大&#xff0c;占用内存大&#xff0c;SPF计算开销大&#xff1b;② LSA洪泛范围大&#xff0c;拓扑变化影响范围大&#xff1b;③ 路由不能被汇总&#xff0c;路由表庞大&#xff0c;查找路由开销大。2. OSPF 多区域优点① 每个区域独立存储…

R 语言绘制六种精美热图:转录组数据可视化实践(基于 pheatmap 包)

在转录组 Bulk 测序数据分析中&#xff0c;热图是展示基因表达模式、样本聚类关系的核心可视化工具。一张高质量的热图不仅能清晰呈现数据特征&#xff0c;更能提升研究成果的展示效果。本文基于 R 语言的pheatmap包&#xff0c;整理了六种适用于不同场景的热图绘制方法&#x…

图片PDF识别工具:扫描PDF文件批量OCR区域图识别改名,识别大量PDF区域内容一次性改名

以下是使用“咕嘎批量OCR识别图片PDF多区域内容重命名导出表格系统”进行操作的具体步骤&#xff1a;1. 打开工具并获取区域坐标打开软件后&#xff0c;选择“PDF识别模式”。导入一个PDF文件作为样本&#xff0c;框选需要提取文字的区域&#xff0c;并保存区域坐标。如果有多个…

中国汽车能源消耗量(2010-2024年)

1419中国汽车能源消耗量&#xff08;2010-2024年&#xff09;发文主题分布数据来源中华人民共和国工业和信息化部-中国汽车能源消耗量查询中国汽车能源消耗量查询 (miit.gov.cn)时间跨度2010-2024年数据范围全国汽车企业数据指标本数据集包含包含传统汽车能源消耗量数据以及新能…

Python 实现服务器自动故障处理工具:从监控到自愈的完整方案

在服务器运维过程中,80% 的故障都是重复性的简单问题(如磁盘空间不足、内存泄漏、服务进程挂掉等)。本文将介绍如何使用 Python 开发一款轻量级自动故障处理工具,通过状态监控、异常诊断、自动修复三个核心模块,实现服务器常见故障的无人值守处理。 核心依赖库 psutil:跨…

图片上传 el+node后端+数据库

模版部分&#xff1a;鼠标悬浮到头像的部分就出现下拉框显示可以修改头像&#xff0c;el-upload是隐藏的&#xff0c;可能只是为了实现on-change函数和before-upload函数吧这块做的确实有点马虎了。<div class"r-content"><el-dropdown><span class&q…

[java 常用类API] 新手小白的编程字典

目录 1.API 1.1定义: 2.Object类 2.1 toString() 方法 2.2 equals() 方法 3. Arrays 类 3.1 equals() 方法 3.2 sort() 方法 3.2.1排序 3.2.2 自定义对象排序 3.3 binarySearch() 方法 3.4 copyOf() 方法 3.5 fill() 方法 3.6 toString() 方法 4.基本数据类型包装类 4.…

去除视频字幕 2, 使用 PaddleOCR 选取图片中的字幕区域, 根据像素大小 + 形状轮廓

有人问我在搞什么&#xff1a;就是做这里的第2步。问题描述这里误导&#xff0c;误判&#xff0c;太严重了。如果我把这个区域当做是 mask ,那么真正的目标会被去除掉还有什么建议吗&#xff1f;比如我能否根据这个mask 的大致形状来判断它是不是字幕&#xff0c; 如果不是细长…

Ubuntu 连接Visual SVN

Windows服务器上的svn仓库为&#xff1a; https://ldw_online:8443/svn/OnlineRepository/LVC IP地址为192.168.8.8 4. 从 Ubuntu 测试连通性 在 Ubuntu 上可以用&#xff1a; bash 复制编辑 curl -vk https://192.168.8.8:8443/ 如果返回 HTTP 头或 SSL 握手成功&#xff…

JAVA:Spring Boot 集成 Protobuf 的技术指南

🚀 1、简述 在分布式服务通信中,数据序列化与反序列化的效率对系统性能影响极大。Protocol Buffers(Protobuf) 是由 Google 提出的一种高效的结构化数据序列化协议,具有: 🔥 高性能(远优于 JSON/XML) 📦 跨语言支持 📉 较小的体积 本篇将带你了解如何在 Spring…

SQLServer内存释放工具介绍:一款实用的数据库性能优化助手

SQLServer内存释放工具介绍&#xff1a;一款实用的数据库性能优化助手 去发现同类优质开源项目:https://gitcode.com/ 在数据库管理中&#xff0c;内存释放是优化服务器性能的重要环节。本文将为您详细介绍一款名为SQLServer内存释放工具的开源项目&#xff0c;帮助您轻松管理…

《蓝耘容器全栈技术指南:企业级云原生与异构计算实战大全》

&#x1f31f; 嗨&#xff0c;我是Lethehong&#xff01;&#x1f31f; &#x1f30d; 立志在坚不欲说&#xff0c;成功在久不在速&#x1f30d; &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞⬆️留言收藏&#x1f680; &#x1f340;欢迎使用&#xff1a;小智初学计…

计算器3.0:实现用户自定义组件

前言&#xff1a; 马总给我提出计算器3.0新需求&#xff1a;可以在页面上输入一个组件&#xff0c;用户的组件库里面就多一个组件&#xff0c;用户就可以使用 一、解决方法&#xff1a; 1. 新增成员变量和初始化 // 新增的输入框 private InputBox newInputBox; // 新增的组…

PIG AI 全新升级:全新 MCP 能力加持,让企业级 AI 开发效率翻倍!

你是否曾为 AI 应用的开发门槛而头疼?调试代码耗费数小时、集成外部工具需要复杂配置、想要快速构建智能系统却不知从何下手…别担心!PIG AI 最新版本带来的 MCP(Model Context Protocol)能力,正为这些问题提供一站式解决方案。本文将带你深入浅出地了解这一重磅升级,手把…