DBAPI 實現分頁查詢的兩種方法

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)能力,正為這些問題提供一站式解決方案。本文將帶你深入淺出地了解這一重磅升級,手把…