67、數據訪問-crud實驗-分頁數據展示

67、數據訪問-crud實驗-分頁數據展示

分頁數據展示是數據訪問中常見的功能,用于將大量數據分割成多個頁面顯示,提升用戶體驗和系統性能。以下是分頁數據展示的相關介紹:

#### 基本原理

1. **確定每頁顯示數量**:設定每頁顯示的數據條數(`pageSize`),如每頁顯示10條。

2. **計算總頁數**:根據總數據量(`totalCount`)和每頁顯示數量,計算總頁數(`totalPage`):

? ?$$

? ?totalPage = \lceil \frac{totalCount}{pageSize} \rceil

? ?$$

3. **獲取當前頁數據**:根據當前頁碼(`currentPage`),計算數據起始位置(`offset`),從數據源中獲取對應的數據:

? ?$$

? ?offset = (currentPage - 1) \times pageSize

? ?$$

? ?查詢語句示例(使用MySQL的`LIMIT`和`OFFSET`):

? ?```sql

? ?SELECT * FROM table LIMIT pageSize OFFSET offset

? ?```

#### 實現步驟

**后端實現:**

1. **接收分頁參數**

? ?- 接收前端傳遞的當前頁碼(`currentPage`)和每頁顯示數量(`pageSize`)。

2. **查詢數據**

? ?- 根據分頁參數,查詢當前頁的數據和總數據量。

? ?- 使用數據庫的分頁功能,如MySQL的`LIMIT`和`OFFSET`,或借助分頁插件(如MyBatis的PageHelper)。

3. **封裝分頁結果**

? ?- 將當前頁數據、總數據量、總頁數等封裝成分頁對象,返回給前端。

**前端實現:**

1. **發送分頁請求**

? ?- 向后端發送包含當前頁碼和每頁顯示數量的請求。

2. **展示數據**

? ?- 接收后端返回的分頁數據,展示當前頁的數據。

3. **分頁導航**

? ?- 根據總頁數生成分頁導航,支持用戶點擊頁碼、上一頁、下一頁等操作。

? ?- 更新當前頁碼,重新發送請求獲取數據。

#### 示例代碼

**后端(Java + Spring Boot):**

```java

// 分頁查詢方法

@GetMapping("/data")

public PageData fetchData(@RequestParam(defaultValue = "1") int page,

? ? ? ? ? ? ? ? ? ? ? ? ? @RequestParam(defaultValue = "10") int size) {

? ? // 使用PageHelper進行分頁查詢

? ? PageHelper.startPage(page, size);

? ? List<Data> dataList = dataService.getAllData();

? ??

? ? // 封裝分頁結果

? ? PageInfo<Data> pageInfo = new PageInfo<>(dataList);

? ? PageData pageData = new PageData();

? ? pageData.setList(dataList);

? ? pageData.setTotal(pageInfo.getTotal());

? ? pageData.setSize(size);

? ? pageData.setPage(page);

? ? pageData.setPages(pageInfo.getPages());

? ??

? ? return pageData;

}

// 分頁數據對象

public class PageData {

? ? private List<?> list;

? ? private long total;

? ? private int size;

? ? private int page;

? ? private int pages;

? ? // 省略getter和setter方法

}

```

**前端(Vue.js):**

```html

<template>

? <div>

? ? <!-- 數據列表 -->

? ? <ul>

? ? ? <li v-for="item in dataList" :key="item.id">{{ item.name }}</li>

? ? </ul>

? ??

? ? <!-- 分頁導航 -->

? ? <div class="pagination">

? ? ? <button @click="prevPage" :disabled="page === 1">上一頁</button>

? ? ? <span v-for="pageNum in pages" :key="pageNum" @click="gotoPage(pageNum)">

? ? ? ? {{ pageNum }}

? ? ? </span>

? ? ? <button @click="nextPage" :disabled="page === pages">下一頁</button>

? ? </div>

? </div>

</template>

<script>

export default {

? data() {

? ? return {

? ? ? dataList: [], // 當前頁數據

? ? ? total: 0, // 總數據量

? ? ? size: 10, // 每頁顯示數量

? ? ? page: 1, // 當前頁碼

? ? ? pages: 0, // 總頁數

? ? };

? },

??

? methods: {

? ? fetchData() {

? ? ? // 發送分頁請求

? ? ? axios.get('/data', {

? ? ? ? params: {

? ? ? ? ? page: this.page,

? ? ? ? ? size: this.size,

? ? ? ? },

? ? ? }).then((res) => {

? ? ? ? // 處理返回的分頁數據

? ? ? ? this.dataList = res.data.list;

? ? ? ? this.total = res.data.total;

? ? ? ? this.pages = res.data.pages;

? ? ? });

? ? },

? ??

? ? prevPage() {

? ? ? if (this.page > 1) {

? ? ? ? this.page--;

? ? ? }

? ? ? this.fetchData();

? ? },

? ??

? ? nextPage() {

? ? ? if (this.page < this.pages) {

? ? ? ? this.page++;

? ? ? }

? ? ? this.fetchData();

? ? },

? ??

? ? gotoPage(pageNum) {

? ? ? this.page = pageNum;

? ? ? this.fetchData();

? ? },

? },

??

? mounted() {

? ? this.fetchData();

? },

};

</script>

```

#### 優化與注意事項

- **性能優化**

? - 避免一次性查詢所有數據,僅查詢當前頁所需數據。

? - 對于大數據量,考慮使用延遲加載或無限滾動等技術。

- **用戶體驗**

? - 提供清晰的分頁導航,顯示當前頁碼和總頁數。

? - 支持跳轉到指定頁碼和快捷鍵操作。

- **安全性**

? - 對分頁參數進行校驗,防止惡意請求。

? - 避免暴露敏感數據,如總數據量等。

通過以上步驟,可以實現分頁數據展示功能,提升系統的可用性和性能。

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

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

相關文章

常見 Web 服務器

Web 服務器有很多種&#xff0c;功能和用途略有不同&#xff0c;下面我會分類介紹主流的 Web 服務器&#xff08;包含靜態/動態/反向代理支持&#xff09;并重點說明類似 Tomcat 的 Java 支持型。 常見 Web 服務器分類 類型名稱描述與特點&#x1f310; 靜態資源服務器Nginx高…

【MacOS】M3 Pro芯片MacBook極速搭建Kubernetes

M3 Pro 芯片 MacBook 2023上使用 Colima 安裝 Kubernetes。 Colima 輕量、高效&#xff0c;并且在 Apple Silicon 架構上表現出色。 下面是詳細的、一步一步的安裝和配置指南。 核心思路 我們將通過以下步驟完成整個過程&#xff1a; 準備工作: 安裝必要的工具&#xff0c;…

import { Add, Dongdong, UserAdd } from ‘@nutui/icons-react‘ 使用圖標導入庫報錯

import { Add } from "nutui/icons-react-taro"; 官網的導入的庫名字不全&#xff0c;后面要加-taro&#xff0c;就行了

猿人學js逆向比賽第一屆第七題

分析響應 看到響應體里面的data是個字體加密&#xff0c;于是這里可以看到woff文件也給返回了&#xff0c;這里現分析這個文件。 打開可以看到這里a351對應的是3和頁面中的3是對應的&#xff0c;于是用ddddocr動態識別字體文件中的字體&#xff0c;然后對應對應的字體替換是不…

股票心理學習篇:交易的人性弱點 - 頻繁交易

以下內容為學習時的筆記整理&#xff0c;視頻作者來自B站&#xff1a;老貓與指標 視頻鏈接&#xff1a;頻繁交易必死&#xff1f;底層邏輯深度剖析&#xff0c;老貓的的破局心法與實戰策略分享 交易的人性弱點 - 頻繁交易 主講人&#xff1a; 老貓 1. 引言&#xff1a;問題的…

WPF入門 #1 WPF布局基礎、WPF樣式基礎、WPF數據模板、WPF綁定

WPF當中有許多的布局容器控件&#xff0c;例如<Grid>、<StackPanel>、<WrapPanel>、<DockPanel>、<UniformGrid>。接下來分別介紹一下各個布局容器控件。 布局基礎 Grid <Grid><Grid.RowDefinitions><RowDefinition Height&qu…

開源大型語言模型的文本記憶新突破!

在現代科技的推動下&#xff0c;人工智能領域正在不斷地突破人類認知的極限。今年&#xff0c;由斯坦福大學、康奈爾大學和西弗吉尼亞大學的計算機科學家們&#xff0c;與法律學者共同展開了一項引人入勝的研究&#xff0c;聚焦于開源大型語言模型的文本記憶表現。這項研究不僅…

LeetCode 3090.每個字符最多出現兩次的最長子字符串

題目鏈接 https://leetcode.cn/problems/maximum-length-substring-with-two-occurrences/ 題目描述 給定一個字符串 s&#xff0c;找出滿足每個字符最多出現兩次的最長子字符串&#xff0c;并返回其長度。 示例 輸入&#xff1a;s "aabba" 輸出&#xff1a;5解…

使用開源NVIDIA cuOpt加速決策優化

使用開源NVIDIA cuOpt加速決策優化 文章目錄 使用開源NVIDIA cuOpt加速決策優化決策優化的現實挑戰供應鏈優化的復雜性實時決策的挑戰計算復雜性的挑戰 NVIDIA cuOpt&#xff1a;GPU加速的決策優化解決方案cuOpt的核心技術架構支持的優化問題類型性能優勢分析 實際應用案例&…

【JVM 09-垃圾回收】

垃圾回收 筆記記錄 1. 如何判斷對象可以回收1.1 引用計數法1.1.1 缺點 1.2 可達性分析算法1.2.1 可達分析、根對象1.2.2 優缺點 1.3 四種引用(強軟弱虛)1.3.1 軟引用的實際使用案例1.3.2 軟引用-引用隊列1.3.3 弱引用的實際使用案例 2. 垃圾回收算法2.1 標記清除算法2.2 標記整…

《二叉搜索樹》

引言&#xff1a; 上次我們結束了類和對象的收尾&#xff0c;之后我們就要學習一些高級的數據結構&#xff0c;今天我們先來看一個數據結構-- 二叉搜索樹。 一&#xff1a; 二叉搜索樹的概念(性質) 二叉搜索樹又稱二叉排序樹&#xff0c;它或者是一棵空樹&#xff0c;或者是…

【Redis】Sentinel哨兵

&#x1f6e1;? 深入理解 Redis Sentinel&#xff1a;高可用架構的守護者 在實際開發中&#xff0c;我們常用 Redis 構建緩存系統或數據中間件。然而&#xff0c;主從復制雖然能實現數據同步&#xff0c;但無法自動故障轉移&#xff08;failover&#xff09;&#xff0c;這就…

Shell腳本應用及實戰演練

文章目錄 一、Shell腳本語言的基本結構1、Shell腳本的用途&#xff1a;2、 Shell腳本基本結構&#xff1a;3、 創建Shell腳本過程4、 腳本注釋規范 二、Shell腳本語言的變量用法詳解位置與預定義變量 三、 Shell字符串詳解1、Shell字符串拼接2、Shell字符串截取3、 Shell的格式…

軟件工程瀑布模型學習指南

軟件工程瀑布模型學習指南 一、瀑布模型核心概念 1.1 定義與特點 瀑布模型是一種經典的軟件開發流程,將項目劃分為順序性的階段,每個階段有明確的輸入和輸出,如同瀑布流水般單向推進。其特點包括: 階段間具有明確的順序性和依賴性強調文檔驅動和階段評審適合需求明確、穩…

獲取gitlab上項目分支版本(二)

獲取gitlab上項目分支版本_gitlab代碼分支版本在哪-CSDN博客 原先寫過一版&#xff0c;但是這次想更新一下項目的分支信息時&#xff0c;提示我 git服務器上的Python版本是2.7.3&#xff0c;這個錯誤表明當前Python環境中沒有安裝requests庫&#xff0c;服務器也沒有連接外網&…

主流防火墻策略繞過漏洞的修復方案與加固實踐

主流防火墻策略繞過漏洞的修復方案與加固實踐 流量關鍵點分析&#xff08;攻擊手法&#xff09; 攻擊者通過精心構造的TCP序列號攻擊和惡意標志組合繞過防火墻DPI檢測&#xff0c;核心手法如下&#xff1a; TCP連接建立&#xff08;正常握手&#xff09; 1049&#xff1a;客戶…

泛微OAe9-后端二開常見數據庫操作

泛微OAe9-后端二開常見數據庫操作 文章目錄 泛微OAe9-后端二開常見數據庫操作一、RecordSet1 RecordSet 操作OA本身的表2 RecordSet 操作OA 本身的存儲過程 二、RecordSetTrans三、RecordSetDataSource四、原生 jdbc 一、RecordSet RecordSet 適用于操作 OA 自己的庫。OA 數據庫…

【數據分析八:hypothesis testing】假設檢驗

本節我們講述假設檢驗和抽樣方法 有關假設檢驗的詳細內容&#xff0c;可以參考我以往的博客 概率論與數理統計總復習_概率論與數理統計復習-CSDN博客文章瀏覽閱讀1.5k次&#xff0c;點贊33次&#xff0c;收藏23次。中科大使用的教輔《概率論和數理統計》&#xff0c;帶大家復…

AI免費工具:promptpilot、今天學點啥、中英文翻譯

promptpilot 激發模型潛能&#xff0c;輕松優化 Prompt https://promptpilot.volcengine.com/startup 今天學點啥 https://metaso.cn/study 能生成網頁和語音播報 中英文翻譯 沉浸式翻譯&#xff0c;瀏覽器插件&#xff0c;ai翻譯

計算機網絡學習筆記:TCP三報文握手、四報文揮手

文章目錄 前言一、TCP三報文握手二、TCP四報文揮手三、TCP保活計時器 前言 TCP通信&#xff0c;通常需要經歷三個階段&#xff1a;三報文握手->發送&#xff0c;接收數據->四報文揮手。 一、TCP三報文握手 三報文握手處于TCP的連接建立階段&#xff0c;主要解決了以下的…