【全棧】SprintBoot+vue3迷你商城-細節解析(2):分頁

【全棧】SprintBoot+vue3迷你商城-細節解析(2):分頁

往期的文章都在這里啦,大家有興趣可以看一下

后端部分:

【全棧】SprintBoot+vue3迷你商城(1)
【全棧】SprintBoot+vue3迷你商城(2)
【全棧】SprintBoot+vue3迷你商城-擴展:利用python爬蟲爬取商品數據
【全棧】SprintBoot+vue3迷你商城(3)
【全棧】SprintBoot+vue3迷你商城(4)
【全棧】SprintBoot+vue3迷你商城(5)
【全棧】SprintBoot+vue3迷你商城(6)

前端部分:

【全棧】SprintBoot+vue3迷你商城-擴展:vue的基本用法

【全棧】SprintBoot+vue3迷你商城-擴展:vue3項目創建及目錄介紹

【全棧】SprintBoot+vue3迷你商城(7)

【全棧】SprintBoot+vue3迷你商城(8)

【全棧】SprintBoot+vue3迷你商城(9)

【全棧】SprintBoot+vue3迷你商城(10)

細節解析部分:

【全棧】SprintBoot+vue3迷你商城-細節解析(1):Token、Jwt令牌、Redis、ThreadLocal變量

補充部分:

【全棧】SprintBoot+vue3迷你商城(11)

文章目錄

  • 【全棧】SprintBoot+vue3迷你商城-細節解析(2):分頁
    • 1.什么是PageHelper
      • 主要特點
      • 使用示例
        • Maven 依賴
        • 代碼示例
    • 2.PageBean有什么用
    • 3.PageHelper.startPage(pageNum, pageSize);
      • 主要用途
      • 應該放在何處
    • 4.Element Plus分頁組件
    • 5.總結

1.什么是PageHelper

PageHelper 是一個用于簡化分頁操作的插件,主要用于 MyBatis 框架中。它可以幫助開發者非常方便地實現數據庫查詢結果的分頁功能,而無需手動編寫 SQL 語句中的 LIMIT 或者其他數據庫特定的分頁語法。PageHelper 支持多種數據庫,包括 MySQL、Oracle、SQL Server 等,并且提供了簡單的 API 來實現分頁。

主要特點

  1. 簡單易用:只需在執行查詢之前調用 PageHelper 的靜態方法設置分頁參數,即可自動完成分頁操作。
  2. 支持多數據庫:PageHelper 支持多種數據庫,能夠根據不同的數據庫生成相應的分頁語句。
  3. 靈活配置:可以通過多種方式進行配置,如通過代碼動態配置或通過配置文件進行全局配置。
  4. 豐富的功能:除了基本的分頁功能外,還提供了一些額外的功能,比如排序等。

使用示例

下面是一個使用 PageHelper 進行分頁查詢的基本示例:

Maven 依賴

首先,在你的項目中添加 PageHelper 的 Maven 依賴(如果你使用的是 Maven 構建工具):

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>版本號</version>
</dependency>
代碼示例

假設你有一個 MyBatis Mapper 接口和對應的 XML 映射文件,你可以這樣使用 PageHelper:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import java.util.List;public List<User> getUsersByPage(int pageNum, int pageSize) {// 設置分頁參數 - 當前頁碼,每頁顯示的數量PageHelper.startPage(pageNum, pageSize);// 執行查詢 - 注意這里的查詢不需要自己寫分頁邏輯List<User> users = userMapper.selectAllUsers();// PageInfo 是 PageHelper 提供的一個封裝類,包含了分頁信息PageInfo<User> pageInfo = new PageInfo<>(users);return pageInfo.getList(); // 返回當前頁的數據列表
}

在這個例子中,PageHelper.startPage(pageNum, pageSize); 會攔截后續的第一個查詢請求,并自動為其添加分頁功能。然后,你就可以像平常一樣執行查詢操作,PageHelper 會在后臺為你處理所有與分頁相關的細節。

所以說,PageHelper 是一個強大的工具,它可以極大地簡化 MyBatis 中的分頁操作,使得開發者可以更專注于業務邏輯的實現,而不是被繁瑣的分頁邏輯所困擾。通過簡單的 API 調用,就能輕松實現對不同數據庫的支持以及高效的分頁查詢。

2.PageBean有什么用

  1. 數據封裝PageBean 可以將查詢結果和分頁信息一起封裝,便于返回給前端進行展示。
  2. 前后端分離:在前后端分離架構中,PageBean 作為 API 響應的一部分,提供給前端所需的所有分頁信息,使得前端可以輕松實現分頁邏輯。
  3. 統一處理分頁邏輯:通過定義一個通用的 PageBean 類,可以在整個項目中統一處理分頁相關的邏輯,減少重復代碼。
  4. 增強可讀性和維護性:將分頁相關的屬性集中在一個類中,有助于提高代碼的可讀性和可維護性。

3.PageHelper.startPage(pageNum, pageSize);

這行代碼有什么用?應該放在何處?

PageHelper.startPage(pageNum, pageSize); 這行代碼是用于在 MyBatis 查詢中啟用分頁功能的。具體來說,它會在你執行查詢操作之前設置分頁參數,并攔截后續的第一個查詢請求,自動為這個查詢添加分頁邏輯(例如,在 SQL 語句中添加 LIMIT 子句)。這意味著你不需要手動修改你的 SQL 查詢來實現分頁。

主要用途

  • 啟用分頁:通過調用 PageHelper.startPage(pageNum, pageSize); 來指定當前頁碼 (pageNum) 和每頁顯示的記錄數 (pageSize)。
  • 自動處理分頁邏輯:之后執行的任何 MyBatis 查詢都會被自動加上分頁條件,而不需要你在 SQL 中手動添加這些條件。

應該放在何處

通常,你應該將 PageHelper.startPage(pageNum, pageSize); 放在你要進行分頁查詢的操作之前,緊挨著你的查詢方法調用。這是因為 PageHelper 使用了 MyBatis 的插件機制來攔截查詢請求,并在實際執行查詢前對其進行修改以添加分頁支持。

例如在上一期的代碼中:

PageHelper.startPage(pageNum, pageSize);List<Goods> goodsList = goodsService.getGoodsList(searchKey);

在這段代碼中,PageHelper.startPage(pageNum, pageSize); 的作用是為接下來的 MyBatis 查詢設置分頁參數。這意味著,在調用 PageHelper.startPage(pageNum, pageSize); 之后的第一個查詢操作將會被自動加上分頁邏輯(例如添加 LIMIT 子句)。因此,將 PageHelper.startPage(pageNum, pageSize); 緊接在實際執行數據庫查詢之前是非常重要的。

4.Element Plus分頁組件

Element Plus 是一個流行的 Vue 3 UI 庫,提供了豐富的組件來幫助開發者快速構建美觀且功能強大的用戶界面。其中,el-pagination 組件用于實現分頁功能,支持多種布局和事件處理,可以方便地集成到你的項目中。

組件源碼:

<template><el-pagination background layout="prev, pager, next" :total="1000" />
</template>

我們結合上期代碼,便可理解其用法

<template>
<div style="display: flex; justify-content: center;"><el-pagination background layout="prev, pager, next" :total="goodsCount" :page-size="pageSize":current-page="currentPage"  @current-change="handlePageChange" /></div>
</template><script>const goodsList = async () => {let result = await getGoodsListService(currentPage.value,pageSize.value,searchKey.value);goodsListModel.value = result.data['items'];goodsCount.value = result.data['total']console.log(result.data['total'])
}
goodsList();const searchKey = ref('')const currentPage = ref(1);const pageSize = ref(12);const handlePageChange = (newPage) => {console.log(newPage)currentPage.value = newPage;goodsList();
};
</script>

5.總結

本期對分頁的一些細節進行了總結,下期將繼續補充開發中的一些細節問題。

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

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

相關文章

kubeadm拉起的k8s集群證書過期的做法集群已奔潰也可以解決

kubeadm拉起的k8s集群證書過期的做法 這個是很久之前遇到的了&#xff0c;今天有空&#xff08;心血來潮&#xff09;就都回憶回憶寫在這里為愛發光&#xff0c;部分內容來自arch先生&#xff08;死黨&#xff09;的幫助。有時候有很多部門提了建k8s的需求&#xff0c;有些是臨…

Webpack 基礎入門

一、Webpack 是什么 Webpack 是一款現代 JavaScript 應用程序的靜態模塊打包工具。在 Web 開發中&#xff0c;我們的項目會包含各種類型的文件&#xff0c;如 JavaScript、CSS、圖片等。Webpack 可以將這些文件打包成一個或多個文件&#xff0c;以便在瀏覽器中高效加載。它就像…

torchsparse安裝過程的問題

1、項目要求torchsparse githttps://github.com/mit-han-lab/torchsparse.gitv1.4.0 2、torch1.8.1cu111 nvcc--version&#xff1a;11.1 這個版本的cuda匹配的gcc、g經常是7.5。設置為7.5. &#xff08;這個gcc、g版本修改不一定&#xff0c;可以先進行后面的&#xff0c…

嵌入式音視頻開發(二)ffmpeg音視頻同步

系列文章目錄 嵌入式音視頻開發&#xff08;零&#xff09;移植ffmpeg及推流測試 嵌入式音視頻開發&#xff08;一&#xff09;ffmpeg框架及內核解析 嵌入式音視頻開發&#xff08;二&#xff09;ffmpeg音視頻同步 嵌入式音視頻開發&#xff08;三&#xff09;直播協議及編碼器…

iOS App的啟動與優化

App的啟動流程 App啟動分為冷啟動和熱啟動 冷啟動&#xff1a;從0開始啟動App熱啟動&#xff1a;App已經在內存中&#xff0c;但是后臺還掛著&#xff0c;再次點擊圖標啟動App。 一般對App啟動的優化都是針對冷啟動。 App冷啟動可分為三個階段&#xff1a; dyld&#xff1a…

oppo,湯臣倍健,康冠科技25屆春招內推

oppo&#xff0c;湯臣倍健&#xff0c;康冠科技25屆春招內推 ①康冠科技25屆春招 【職位】算法、軟件、硬件、技術&#xff0c;結構設計&#xff0c;供應鏈&#xff0c;產品&#xff0c;職能&#xff0c;商務 【一鍵內推】https://sourl.cn/2Mm9Lk 【內推碼】EVBM88 ②湯臣倍健…

centos 9 時間同步服務

在 CentOS 9 中&#xff0c;默認的時間同步服務是 chrony&#xff0c;而不是傳統的 ntpd。 因此&#xff0c;建議使用 chrony 來配置和管理時間同步。 以下是使用 chrony 配置 NTP 服務的步驟&#xff1a; 1. 安裝 chrony 首先&#xff0c;確保系統已安裝 chrony。 在 CentOS…

解鎖 Python 導入系統:從基礎到進階的深度指南

本文全面解讀 Python 導入系統&#xff0c;從導入機制的基礎概念&#xff0c;如模塊、包的導入方式&#xff0c;到查找、加載模塊的詳細過程&#xff0c;再到導入系統的高級特性和應用場景&#xff0c;通過豐富示例、直觀圖表和對比分析&#xff0c;助你深入理解并熟練運用導入…

DDoS技術解析

這里是Themberfue 今天我們不聊別的&#xff0c;我們聊聊著名的網絡攻擊手段之一的 DDoS&#xff0c;看看其背后的技術細節。 DoS 了解 DDoS 前&#xff0c;先來講講 DoS 是什么&#xff0c;此 DoS 而不是 DOS 操作系統啊。1996年9月6日&#xff0c;世界第三古老的網絡服務提供…

docker安裝kafka,并通過springboot快速集成kafka

目錄 一、docker安裝和配置Kafka 1.拉取 Zookeeper 的 Docker 鏡像 2.運行 Zookeeper 容器 3.拉取 Kafka 的 Docker 鏡像 4.運行 Kafka 容器 5.下載 Kafdrop 6.運行 Kafdrop 7.如果docker pull wurstmeister/zookeeper或docker pull wurstmeister/kafka下載很慢&#x…

C++ 與 Java 的對比分析:除法運算中的錯誤處理

博客主頁&#xff1a; [小????????] 本文專欄: Java 文章目錄 &#x1f4af;前言&#x1f4af;C中的除法錯誤處理&#x1f4af;Java中的除法錯誤處理&#x1f4af;C與Java錯誤處理的對比&#x1f4af;錯誤處理的優化和實踐&#x1f4af;小結 &#x1f4af;前言 在…

LLM之循環神經網絡(RNN)

在人工智能的領域中&#xff0c;神經網絡是推動技術發展的核心力量。今天&#xff0c;讓我們深入探討循環神經網絡&#xff08;RNN&#xff09; 一、神經網絡基礎 &#xff08;1&#xff09;什么是神經網絡 神經網絡&#xff0c;又稱人工神經網絡&#xff0c;其設計靈感源于人…

SQL sever數據導入導出實驗

1.創建數據庫TCP-H &#xff08;1&#xff09;右鍵“數據庫”&#xff0c;點擊“新建數據庫”即可 &#xff08;2&#xff09;用sql語言創建&#xff0c;此處以創建數據庫DB_test為例&#xff0c;代碼如下&#xff1a; use master;go--檢查在當前服務器系統中的所有數據里面…

讓編程變成一種享受-明基RD320U顯示器

引言 作為一名有著多年JAVA開發經驗的從業者&#xff0c;在工作過程中&#xff0c;顯示器的重要性不言而喻。它不僅是我們與代碼交互的窗口&#xff0c;更是影響工作效率和體驗的關鍵因素。在多年的編程生涯中&#xff0c;我遇到過各種各樣的問題。比如&#xff0c;在進行代碼…

計算機網絡(涵蓋OSI,TCP/IP,交換機,路由器,局域網)

一、網絡通信基礎 &#xff08;一&#xff09;網絡通信的概念 網絡通信是指終端設備之間通過計算機網絡進行的信息傳遞與交流。它類似于現實生活中的物品傳遞過程&#xff1a;數據&#xff08;物品&#xff09;被封裝成報文&#xff08;包裹&#xff09;&#xff0c;通過網絡…

圖像處理篇---基本OpenMV圖像處理

文章目錄 前言1. 灰度化&#xff08;Grayscale&#xff09;2. 二值化&#xff08;Thresholding&#xff09;3. 掩膜&#xff08;Mask&#xff09;4. 腐蝕&#xff08;Erosion&#xff09;5. 膨脹&#xff08;Dilation&#xff09;6. 縮放&#xff08;Scaling&#xff09;7. 旋轉…

SpringMVC重定向接口,參數暴露在url中解決方案!RedirectAttributes

OK&#xff0c;首先描述下業務場景&#xff0c;終端數量限制登錄 1.首先訪問項目login的get接口 2.輸入賬號密碼點擊登錄后&#xff0c;會請求login的POST接口 3.后臺對終端數量邏輯處理不允許登錄跳回到登錄頁面 4.因代碼原因需在后臺進行多次重定向接口&#xff0c;最后跳…

Spring Boot01(注解、)---java八股

Spring Boot中常用注解及其底層實現 1、SpringBootApplication注解&#xff1a; SpringBootApplication注解&#xff1a;這個注解標識了一個SpringBoot工程&#xff0c;它實際上是另外三個注解的組合&#xff0c;這三個注解是&#xff1a; aSpringBootConfiguration&#xff1a…

?2.快速了解HTML5的標簽類型

??HTML5 的標簽類型豐富多樣&#xff0c;每種類型都有其獨特的功能和用途&#xff0c;以下是一些常見的 HTML5 標簽類型介紹&#xff1a; &#x1f98b;結構標簽 &#x1faad;<html>&#xff1a;它是 HTML 文檔的根標簽&#xff0c;所有其他標簽都包含在這個標簽內&am…

eNSP防火墻綜合實驗

一、實驗拓撲 二、ip和安全區域配置 1、防火墻ip和安全區域配置 新建兩個安全區域 ip配置 Client1 Client2 電信DNS 百度web-1 聯通DNS 百度web-2 R2 R1 三、DNS透明代理相關配置 1、導入運營商地址庫 2、新建鏈路接口 3、配置真實DNS服務器 4、創建虛擬DNS服務器 5、配置D…