前言
大型項目的數據體量很大,在前端界面展示時為保障展示效果,會要求接口快速返回,這時候后端會選擇分頁獲取數據,只傳遞要查詢的頁碼數據。這就避免了大多問題,達到快速返回的效果。
常用的分頁有2種:
①? MyBatis 分頁插件:PageHelper。這個插件很常用,支持多數據庫分頁,無需修改SQL語句即可實現分頁功能。
注意:這個插件的功能相當于在你代碼中的第一個 SQL 語句的后面加上 LIMIT [offset], [limit] 子句,例如 LIMIT 20, 10 ,表示從21條記錄開始,獲取10條記錄。
這個插件 只會在你的第一條語句后面添加子句 ,如果代碼后面還存在其他的 SQL 則會不生效。
如果你使用這個插件獲取 UserId 列表,并用該列表進行后續操作,要注意返回的 順序問題 。
②? PageInfo 類:這是手動分頁,適合數據量小的情況,因為需要預先加載所有數據,例如預先加載所有 UserId ,對 UserId 進行劃分數量,根據請求的分頁參數查詢處在不同數量位置的 UserId 。
本文只介紹分頁插件 PageHelper ,包括使用的依賴,創建方式,代碼示例和驗證結果展示等。
分頁插件 PageHelper 的依賴導入方式
1. 使用pagehelper 包
添加pagehelper插件的依賴,并還需要定義一個?config
?文件。
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.1.3</version>
</dependency>
package com.wen.config;import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;@Configuration
public class MyBatisConfig {// 設置相關的參數信息,下面有對參數的詳細解釋@Beanpublic PageHelper pageHelper() {PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("dialect", "Mysql");properties.setProperty("offsetAsPageNum", "true");properties.setProperty("rowBoundsWithCount", "true");pageHelper.setProperties(properties);return pageHelper;}
}// Properties 中需設置的屬性值:解釋
// 1. "dialect", "Mysql":不同數據庫的SQL語句不同,這里指定了數據庫語言為Mysql
// 2. "offsetAsPageNum", "true":這個屬性通常用于指定是否將傳入的 offset 參數當作 pageNum 頁碼使用。
// ① 設置為 true,意味著如果分頁查詢時傳遞了offset偏移量,PageHelper會將其視為頁碼來處理。
// ② 非必需,因為 PageHelper 默認就是使用頁碼 pageNum 和每頁記錄數 pageSize 來進行分頁的。
// 3. "rowBoundsWithCount", "true":該屬性用于指定是否進行 count 查詢以獲取總記錄數。
// 在分頁查詢時,需要知道總記錄數,它可以讓你在前端展示總頁數或總記錄數。
// 設置為 true 表示 PageHelper 在執行分頁查詢時,會先執行一個 count 查詢來獲取總記錄數。