分頁查詢的實現

第一步:導入pom依賴

<!--配置PageHelper分頁插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions></dependency>

第二步:mapper層方法

List<User> selectAllUser();

第三步:xml中寫SQL

<!--查詢用戶列表--><select id="selectAllUser" resultType="com.example.deepseek.account.pojo.entity.User">SELECT *FROM usersORDER BY id DESC</select>

?注意:一定要加上排序,否則分頁的時候數據可能會隨機改變,例如:數據出現兩頁的情況,數據不能完全展示。

第四步:service層方法

PageInfo<UserDto> getUserList(Integer pageNum, Integer pageSize);

第五步:impl中的方法

@Overridepublic PageInfo<UserDto> getUserList(Integer pageNum, Integer pageSize) {//1.開啟分頁PageHelper.startPage(pageNum, pageSize);//2.查詢用戶列表List<User> users = userMapper.selectAllUser();//3. 獲取原始分頁信息PageInfo<User> userPageInfo = new PageInfo<>(users);//4.轉化Entity為Dto列表List<UserDto> userDtos = users.stream().map(user -> new UserDto(user.getId(),user.getName(),user.getEmail(),user.getRole(),user.getPhone(),user.getAvatar(),user.getCreateTime(),user.getUpdateTime())).collect(Collectors.toList());// 5. 創建新PageInfo,復制分頁原數據PageInfo<UserDto> dtoPageInfo = new PageInfo<>();dtoPageInfo.setPageNum(userPageInfo.getPageNum());dtoPageInfo.setPageSize(userPageInfo.getPageSize());dtoPageInfo.setTotal(userPageInfo.getTotal());dtoPageInfo.setPages(userPageInfo.getPages());dtoPageInfo.setList(userDtos);  // 設置轉換后的數據return dtoPageInfo;}

?注意:如果系統中的pojo類是嚴格按照 Dto、Entity、VO 寫的,這里將 Entity 轉化為 Dto 的時候要先獲取原始分頁信息,然后轉化對象,最后再創建新的 PageInfo ,保存分頁的原始數據,防止后面分頁的時候出現錯誤。如果沒有先獲取原始分頁數據,而是直接使用 PageInfo.of 將轉換后的List<UserDto> 返回,會導致分頁的時候 PageInfo.of(userDtos) 檢測到傳入的是普通集合(非 Page 類型),??強制重置分頁信息??(pageNum=1,?pageSize=集合大小

PageInfo?源碼中,若傳入的?List?不是?Page?類型,會默認:

this.pageNum = 1;  // 固定為第一頁
this.pageSize = list.size();  // 每頁大小=集合總長度
this.total = list.size();     // 總記錄數=集合總長度

第六步:controller層方法

/*** 獲取用戶列表接口*/@RequestMapping("/getUserList")public JsonResult getUserList(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize) {PageInfo<UserDto> pageInfo = userService.getUserList(pageNum, pageSize);return JsonResult.success(pageInfo);}

第七步:vue3前端寫分頁組件

1、和平常的列表查詢一樣,先寫出用戶列表。

<div>
<el-table-column prop="id" label="ID" width="80"/><el-table-column label="頭像" width="100"><template #default="scope"><el-avatar :size="50" :src="getAvatarUrl(scope.row.avatar)"/></template></el-table-column><el-table-column prop="name" label="用戶名"/><el-table-column prop="role" label="角色"/><el-table-column prop="email" label="郵箱"/><el-table-column prop="phone" label="聯系方式"/><el-table-column prop="createTime" label="創建時間"/><el-table-column prop="updateTime" label="更新時間"/><el-table-column label="操作"><template #default="scope"><el-button size="small" @click="handleEdit(scope.row)">編輯</el-button><el-button size="small" type="danger" @click="handleDelete(scope.row)">刪除<el-button></template></el-table-column></el-table>
</div>

2、然后添加分頁查詢組件

<div class="pagination-wrapper"><el-paginationbackground@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[5, 10, 20, 50]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="total"/>
</div>

第八步:寫前端方法

// 分頁相關變量
const currentPage = ref(1)
const pageSize = ref(5)
const total = ref(0)// 獲取用戶列表數據
const fetchUserList = async () => {try {loading.value = trueawait request.get(`/api/user/getUserList`, {params: {pageNum: currentPage.value,pageSize: pageSize.value}}).then(response => {if (response.code === 200 || response.code === "200") {userList.value = response.data.list;total.value = response.data.total;} else {throw new Error(`返回數據格式錯誤: ${response.data?.message || '未知錯誤'}`)}})} catch (error) {console.error('獲取用戶數據失敗:', error)ElMessage.error(`數據加載失敗: ${error.message}`)} finally {loading.value = false}
}// 每頁條數改變事件
const handleSizeChange = (newSize) => {pageSize.value = newSizecurrentPage.value = 1fetchUserList()
}// 當前頁碼改變事件
const handleCurrentChange = (newPage) => {currentPage.value = newPagefetchUserList()
}// 操作后數據刷新邏輯
const refreshAfterOperation = () => {if (userList.value.length === 0 && currentPage.value > 1) {currentPage.value -= 1}fetchUserList()
}

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

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

相關文章

JDK17 Http Request 異步處理 源碼刨析

為什么可以異步&#xff1f; #調用起始源碼 // 3. 發送異步請求并處理響應 CompletableFuture future client.sendAsync( request, HttpResponse.BodyHandlers.ofString() // 響應體轉為字符串 ).thenApply(response -> { // 狀態碼檢查&#xff08;非200系列拋出異常&…

會計 - 合并4 - 或有對價的會計處理

一、多次交易(構成一攬子交易)形成非同一控制下企業合并 構成一攬子交易的,在取得控制權時確認長期股權投資;取得控制權之前已支付的款項應作為預付投資款項(通常以”預付賬款“科目核算)處理。 滿足以下一種或多種情況的,通常應將多次交易事項作為“一攬子交易”進行會…

【HTTP三個基礎問題】

面試官您好&#xff01;HTTP是超文本傳輸協議&#xff0c;是互聯網上客戶端和服務器之間傳輸超文本數據&#xff08;比如文字、圖片、音頻、視頻等&#xff09;的核心協議&#xff0c;當前互聯網應用最廣泛的版本是HTTP1.1&#xff0c;它基于經典的C/S模型&#xff0c;也就是客…

NLP中的input_ids是什么?

在自然語言處理(NLP)中,input_ids 是什么 在自然語言處理(NLP)中,input_ids 是將文本轉換為模型可處理的數字表示后的結果,是模型輸入的核心參數之一。 一、基本概念 文本數字化 原始文本(如 “Hello world!”)無法直接被模型處理,需要通過分詞器(Tokenizer) 將其…

?? Linux Docker 基本命令參數詳解

&#x1f433; Linux Docker 基本命令參數詳解 &#x1f4d8; 1. Docker 簡介 Docker 是一個開源的容器化平臺&#xff0c;它通過將應用及其依賴打包到一個輕量級、可移植的容器中&#xff0c;從而實現跨平臺運行。Docker 采用 C/S 架構&#xff0c;服務端稱為 Docker Daemon&a…

Spring IoC 模塊設計文檔

注&#xff1a;碼友們&#xff0c;我們是從設計的角度一步步學習和分解Spring&#xff1b;所以不要一上來就想看源碼&#xff0c;也不需要關心Spring具體加載進去的&#xff1b;我們只封裝工具&#xff08;如IoC&#xff09;&#xff0c;至于調用&#xff0c;暫時不用考慮&…

Linux(生產消費者模型/線程池)

目錄 一 生產消費者模型 1. 概念&#xff1a; 2. 基于阻塞隊列的生產消費者模型&#xff1a; 1. 對鎖封裝 2. 對條件變量封裝 二 信號量(posix) 1. 概念 2. API 3. 基于環形隊列的生產消費者模型 三 線程池 1. 概念 2. 示例 四 補充字段 1. 可重入函數 VS 線程安…

無線網絡掃描與分析工具 LizardSystems Wi-Fi Scanner 25.05

—————【下 載 地 址】——————— 【?本章下載一】&#xff1a;https://pan.xunlei.com/s/VOS4QQ9APt3FgFQcxyArBiZlA1?pwdi4du# 【?本章下載二】&#xff1a;https://pan.xunlei.com/s/VOS4QQ9APt3FgFQcxyArBiZlA1?pwdi4du# 【百款黑科技】&#xff1a;https://uc…

Java Map完全指南:從基礎到高級應用

文章目錄 1. Map接口概述Map的基本特性 2. Map接口的核心方法基本操作方法批量操作方法 3. 主要實現類詳解3.1 HashMap3.2 LinkedHashMap3.3 TreeMap3.4 ConcurrentHashMap 4. 高級特性和方法4.1 JDK 1.8新增方法4.2 Stream API結合使用 5. 性能比較和選擇建議性能對比表選擇建…

[最全總結]城市災害應急管理系統

城市災害應急管理集成系統 | 國家重點研發政府間合作項目 Vue+ElementUI+Bpmn+Cesium+Java SpringBoot 項目描述 在智慧城市戰略背景下,項目面向內澇、團霧和火災等災害,開發了集災害模型集成模擬、場景可視化與應急預案管理于一體的系統,系統各子模塊進行軟件功能測試,測…

QtWidgets模塊功能及架構解析

QtWidgets 是 Qt 框架中用于創建傳統桌面應用程序圖形用戶界面(GUI)的核心模塊。在 Qt 6.0 中&#xff0c;QtWidgets 模塊繼續提供豐富的 UI 組件和功能&#xff0c;盡管 Qt 正在向 QML 方向演進&#xff0c;但 QtWidgets 仍然是許多桌面應用程序的基礎。 一、主要功能 基礎窗…

grep、wc 與管道符快速上手指南

&#x1f3af; Linux grep、wc 與管道符快速上手指南&#xff1a;從入門到實用 &#x1f4c5; 更新時間&#xff1a;2025年6月7日 &#x1f3f7;? 標簽&#xff1a;Linux | grep | wc | 管道符 | 命令行 文章目錄 前言&#x1f31f; 一、grep、wc 和管道符簡介1.核心功能2.核心…

C++11 右值引用:從入門到精通

文章目錄 一、引言二、左值和右值&#xff08;一&#xff09;概念&#xff08;二&#xff09;區別和判斷方法 三、左值引用和右值引用&#xff08;一&#xff09;左值引用&#xff08;二&#xff09;右值引用 四、移動語義&#xff08;一&#xff09;概念和必要性&#xff08;二…

java復習 04

心情復雜呢&#xff0c;現在是6.7高考第一天&#xff0c;那年今日此時此刻我還在考場掙扎數學&#xff0c;雖然結果的確很糟糕&#xff0c;&#xff0c;現在我有點對自己生氣明明很多事情待辦確無所事事沒有目標&#xff0c;不要忘記曾經的自己是什么樣子的&#xff0c;去年今日…

從零開始搭建 Pytest 測試框架(Python 3.8 + PyCharm 版)

概述 在軟件開發中&#xff0c;自動化測試是確保代碼質量的重要方式。而 Pytest 是一個功能強大且易于上手的 Python 測試框架&#xff0c;非常適合初學者入門。 本文將帶你一步步完成&#xff1a; 安裝和配置 Pytest在 PyCharm 中搭建一個清晰的測試項目結構 準備工作 在…

用電腦通過網口控制keysight示波器

KEYSIGHT示波器HD304MSO性能 亮點: 體驗 200 MHz 至 1 GHz 的帶寬和 4 個模擬通道。與 12 位 ADC 相比,使用 14 位模數轉換器 (ADC) 將垂直分辨率提高四倍。使用 10.1 英寸電容式觸摸屏輕松查看和分析您的信號。捕獲 50 μVRMS 本底噪聲的較小信號。使用獨有區域觸摸在幾秒…

Java Smart 系統題庫試卷管理模塊設計:從需求到開發的實戰指南

在教育信息化不斷推進的背景下&#xff0c;高效的題庫及試卷管理系統至關重要。Java Smart 系統中的題庫及試卷管理模塊&#xff0c;旨在為教師提供便捷的試題錄入、試卷生成與管理功能&#xff0c;同時方便學生在線練習與考試。本文將詳細介紹該模塊的設計思路與核心代碼實現。…

PDF圖片和表格等信息提取開源項目

文章目錄 綜合性工具專門的表格提取工具經典工具 綜合性工具 PDF-Extract-Kit - opendatalab開發的綜合工具包&#xff0c;包含布局檢測、公式檢測、公式識別和OCR功能 倉庫&#xff1a;opendatalab/PDF-Extract-Kit特點&#xff1a;功能全面&#xff0c;包含表格內容提取的S…

git小烏龜不顯示圖標狀態解決方案

第一步 在開始菜單的搜索處&#xff0c;輸入regedit命令&#xff0c;打開注冊表。 第二步 在注冊表編輯器中&#xff0c;找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 這一項。 第三步 讓Tortoise相關的項目排在前…

Windows平臺RTSP/RTMP播放器C#接入詳解

大牛直播SDK在Windows平臺下的RTSP、RTMP播放器模塊&#xff0c;基于自研高性能內核&#xff0c;具備極高的穩定性與行業領先的超低延遲表現。相比傳統基于FFmpeg或VLC的播放器實現&#xff0c;SmartPlayer不僅支持RTSP TCP/UDP自動切換、401鑒權、斷網重連等網絡復雜場景自適應…