MyBatis實現分頁查詢-蒼穹外賣筆記

首先分頁查詢的原理是SQL的limit關鍵字。

LIMIT?子句用于限制 SQL 查詢返回的記錄數。它接受一個或兩個整數參數,第一個參數表示偏移量,第二個參數表示返回的最大記錄數。

我們完全可以使用前端傳給我們的page,pageSize,自己去計算limit的參數,但是這樣效率很慢。

所以有了分頁插件pageHelper.

1 首先引入pageHeper的Maven坐標

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
2 在Controller層接受分頁請求

?主要參數是Page(第幾頁),PageSize(一頁的大小)

 @GetMapping("/page")public Result<PageResult> Page(EmployeePageQueryDTO employeePageQueryDTO){PageResult pageResult=employeeService.PageQuery(employeePageQueryDTO);return Result.success(pageResult);}

? 這里參數用一個對象接收

3 Service層邏輯處理

????????PageHepler可以幫助我們計算limit的參數,并同時幫我們把limit加在普通的select語句中,變成分頁查詢。這樣一來執行分頁,我們只需要在Mapper配置普通的查詢語句,由PageHelper幫我們補上limit所需語句。
page繼承了ArrayList,所以它可以接收查詢的返回結果,多個數據本身就會返回一個集合。
如果不想用Page,直接使用ArrayList也是可以的,只不過Page有更多的功能,所以pageHeper和Page不是一定要一起使用.看自己的需求選擇。

/*** 員工分頁查詢* @param employeePageQueryDTO* @return*/@Overridepublic PageResult PageQuery(EmployeePageQueryDTO employeePageQueryDTO) {// PageHepler可以幫助我們計算limit的參數,并同時幫我們把limit加在普通的select語句中,變成條件查詢。PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());//執行分頁,我們只需要在Mapper配置普通的查詢語句,由上面的幫我們補上limit所需語句。//page繼承了ArrayList,所以它可以接收查詢的返回結果,多個數據本身就會返回一個集合。//如果不想用Page,直接使用ArrayList也是可以的,只不過Page有更多的功能Page<Employee> pages=employeeMapper.PageQuery(employeePageQueryDTO);PageResult pageResult=new PageResult();pageResult.setRecords(pages.getResult());return pageResult;}

4 Mapper層的SQL配置

Mapper接口

 /*** 員工分頁查詢* @param employeePageQueryDTO* @return*/Page<Employee> PageQuery(EmployeePageQueryDTO employeePageQueryDTO);

Mapper對應SQL

<select id="PageQuery" resultType="Employee">
select * from employee
<where><if test="name!=null and name!=''">name like concat("%",#{name},"%")</if>
</where></select>

很明顯這里只是一個普通的查詢,并沒有limit語句,這正是pageHelper的作用,幫我們計算好參數,然后加入SQL語句。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90795.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90795.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90795.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統性能評估方法深度解析:從經典到現代

評估本質&#xff1a;系統性能評估是通過量化分析衡量計算機系統在特定工作負載下的表現能力&#xff0c;核心目標是建立可比較的性能基準&#xff0c;為系統設計、選型和優化提供科學依據。一、評估方法分類體系 #mermaid-svg-0ceD4AA2KDwzwtb6 {font-family:"trebuchet …

WebSocket實現多人實時在線聊天

最近公司在做一個婚戀app&#xff0c;需要增加一個功能&#xff0c;實現多人實時在線聊天。基于WebSocket在Springboot中的使用&#xff0c;前端使用vue開發。 一&#xff1a;后端 1. 引入 websocket 的 maven 依賴 <dependency><groupId>org.springframework.bo…

學習筆記隨記-FPGA/硬件加速

一、FPGA&#xff1a;Field Programmable Gate Array 現場可編程門陣列 可編程輸入/輸出單元、基本可編程邏輯單元、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內嵌專用硬核。 可編程輸入/輸出單元&#xff08;I/O&#xff09;單元 輸入/輸出&#xff08;Input/Ouput&…

docker宿主機修改ip后起不來問題解決

確保容器已經連接到了正確的網絡。如果沒有&#xff0c;你可以使用以下命令將容器連接到網絡&#xff1a; 1、停止docker網絡 ifconfig docker0 down1. 停止 Docker 服務 sudo systemctl stop docker2. 刪除 docker0 接口 sudo ip link delete docker03、刪除舊的網橋 docker n…

G1 垃圾回收算法詳解

目錄 簡介 G1 GC 的設計目標 內存結構 回收過程 初始標記&#xff08;Initial Mark&#xff09;并發標記&#xff08;Concurrent Mark&#xff09;最終標記&#xff08;Final Mark / Remark&#xff09;篩選回收&#xff08;Cleanup / Evacuation&#xff09; 混合回收&…

JavaEE多線程——鎖策略 CAS synchronized優化

目錄前言1.鎖策略1.1 樂觀鎖和悲觀鎖1.2 重量級鎖和輕量級鎖1.3 掛起等待鎖和自旋鎖1.4 公平鎖和非公平鎖1.5 可重入鎖和不可重入鎖1.6 讀寫鎖2.CAS2.1 CAS的應用2.2 CAS的ABA問題3.synchronized優化3.1鎖升級3.2鎖消除3.3鎖粗化總結前言 本篇文章主要介紹多線程中鎖策略、CAS…

Windows符號鏈接解決vscode和pycharm占用C盤空間太大的問題

Windows符號鏈接解決vscode和pycharm占用C盤空間太大的問題 參考文章&#xff1a;Windows符號鏈接 1、找到vscode和pycharm在C盤的緩存文件夾。 C:\Users\用戶名\AppData\Roaming\Code C:\Users\用戶名\.vscode\extensionsC:\Users\用戶名\AppData\Local\JetBrains C:\Users…

賦能家庭、行業與工業場景,智微智能新一代Twin Lake 全棧智能終端發布

在數字化浪潮席卷全球的今天&#xff0c;智能終端已成為連接物理世界與數字世界的核心樞紐。智微智能基于Intel Twin Lake平臺&#xff0c;推出覆蓋家庭/行業應用及工業物聯網的全場景產品矩陣&#xff0c;為不同場景下的用戶提供高效、可靠的產品和解決方案。Intel Twin Lake架…

復習筆記 31

前言 好好復習。今天距離考研初試還剩一百六十一天。我的時間其實沒剩多少了呀。我得好好加油。 歸并排序 #include<algorithm> #include<iostream>using namespace std;const int N 100010; int n; int a[N], tmp[N];void merge ( int a[], int l, int r ) {if (…

el-tree 懶加載 loadNode

el-tree 是 Element UI 提供的樹形組件&#xff0c;其懶加載功能通過 loadNode 方法實現&#xff0c;可以在用戶展開節點時動態加載子節點數據&#xff0c;避免一次性加載大量數據。下面介紹 loadNode 的具體用法和示例。基本用法loadNode 是 el-tree 的一個重要屬性&#xff0…

【機器學習入門巨詳細】(研0版)二創OPEN MLSYS

自學機器學習&#xff0c;從入門到精通導論機器學習的基本框架設計目標機器學習框架基本組成原理機器學習生態機器學習工作流環境配置數據處理模型定義損失函數和優化器訓練及保存模型測試及驗證模型定義深度神經網絡以層為核心定義神經網絡神經網絡層實現原理自定義神經網絡層…

Excel 轉 JSON by WTSolutions API 文檔

Excel 轉 JSON by WTSolutions API 文檔 簡介 Excel 轉 JSON API 提供了一種簡單的方式將 Excel 和 CSV 數據轉換為 JSON 格式。該 API 接受制表符分隔或逗號分隔的文本數據&#xff0c;并返回結構化的 JSON。 接口端點 POST https://mcp.wtsolutions.cn/excel-to-json-api 請求…

git版本發布

cvs和svn都是集中式版本控制系統,而git是分布式版本控制系統。 1、集中式版本控制系統必須聯網才能工作&#xff0c;如果在局域網內還好&#xff0c;帶寬夠大&#xff0c;速度夠快&#xff0c;可如果在互聯網上&#xff0c;遇到網速慢的話&#xff0c;呵呵。分布式版本控制系統…

138-EMD-KPCA-CPO-CNN-BiGRU-Attention模型!

138-EMD-KPCA-CPO-CNN-BiGRU-Attention基于經驗模態分解和核主成分分析的長短期記憶網絡改進多維時間序列預測MATLAB代碼&#xff01;其中&#xff08;含CPO-CNN-BiGRU-attention、EMD-CPO-CNN-BiGRU-Attention、EMD-KPCA-CPO-CNN-BiGRU-Attention三個模型的對比&#xff09; 可…

系統思考:多元勝過能力

系統思考&#xff1a;從整體出發&#xff0c;打破瓶頸&#xff0c;擁抱多元 我們是否曾經陷入過這樣的困境&#xff1f; 1、專注能力提升&#xff0c;卻無法突破瓶頸&#xff1a;我和團隊日復一日地努力提升個人能力&#xff0c;投入無數時間和精力&#xff0c;但始終無法打破現…

qt樣式整合持續更新中(實測有效的)

// 僅顯示上邊框 一般可以作為直線使用 border-top: 2px solid black; //畫虛線 border-bottom: 2px dashed white; //單個圓角 border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; //透明背景 background:rgba(0,0,0,0); //設置字體 font:15pt; //給button設置…

[java][springboot]@PostConstruct的介紹和用法

在 Spring Boot&#xff08;以及整個 Spring Framework&#xff09;中&#xff0c;PostConstruct 是一個非常常用的注解&#xff0c;用于在 依賴注入完成后 執行一些初始化操作。import jakarta.annotation.PostConstruct; import org.springframework.stereotype.Component;Co…

Leaflet面試題及答案(41-60)

查看本專欄目錄 文章目錄 ?? 面試問題及答案(41-60)41. 如何判斷某個點是否在地圖可視區域內?42. 如何動態更新 Marker 位置?43. 如何清除地圖上的所有圖層?44. 如何保存地圖截圖?45. 如何檢測瀏覽器是否支持觸摸?46. Leaflet 是否支持 TypeScript?47. 如何修改默認圖…

Redis事件機制

Redis 采用事件驅動機制來處理大量的網絡IO。它并沒有使用 libevent 或者 libev 這樣的成熟開源方案&#xff0c;而是自己實現一個非常簡潔的事件驅動庫 ae_event。事件機制Redis中的事件驅動庫只關注網絡IO&#xff0c;以及定時器。該事件庫處理下面兩類事件&#xff1a;文件事…

Linux基礎開發工具

目錄 1.寫在前面 2.權限 3.file命令 4.基礎開發工具 1.軟件包管理器 5.編輯器vim 1.寫在前面 我們在上一講解中講解了權限是人事物屬性&#xff0c;還知道了擁有者所屬組其他人這三個概念&#xff0c;知道了33一組&#xff0c;rwx分別代表什么。那么下面我們繼續進行權限…