一、什麼是Pagehelper
Pagehelper 是 MyBatis 分頁插件,可以使用最簡單的方法實現 MyBatis 分頁查詢,支持多種資料庫。
使用 Pagehelper 可以避免我們手動在 SQL 中編寫分頁邏輯,讓開發更為便捷和高效。
二、在 Spring Boot 中使用 Pagehelper
1. 添加依賴
我們可以在 pom.xml 中添加 Pagehelper 的依賴:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency>
2. 開啟分頁插件
在 Spring Boot 的配置文件中開啟 Pagehelper :
# 開啟分頁插件支持 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql
其中 helperDialect 表示資料庫類型, reasonable 表示分頁合理化參數,默認值為 false。支持方法參數類型集合,默認值為 false。
params 表示使用 map 接收分頁參數時,param1 參數作為前綴值,count 作為後綴值,用於收集數據總數信息。也可以用這種方式自定義參數名。
3. 編寫 DAO 層代碼
我們可以在 DAO 層介面中直接使用 PageHelper 進行分頁查詢,如下所示:
List<SomeEntity> selectPage(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
這裡的 pageNum 表示當前頁碼,pageSize 表示頁面大小。
4. 編寫 Service 層代碼
在 Service 層中直接調用 DAO 層進行分頁操作,如下所示:
@Service public class SomeService { @Autowired private SomeDAO someDAO; public PageInfo<SomeEntity> selectPage(int pageNum, int pageSize) { // 開始分頁 PageHelper.startPage(pageNum, pageSize); List<SomeEntity> list = someDAO.selectPage(); // 封裝分頁結果 return new PageInfo<>(list); } }
在使用 Pagehelper 進行分頁查詢時,我們需要先調用 PageHelper.startPage(pageNum, pageSize) 方法,設置頁碼和頁面大小,然後執行查詢操作。最後使用 PageInfo 對查詢結果進行封裝。
三、注意事項
1. 分頁參數的傳遞方式
PageHelper 的分頁參數可以使用方法參數、Map 或者 RowBounds 三種方式之一進行傳遞。
List<SomeEntity> selectPage(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize); List<SomeEntity> selectPage(Map<String, Object> params); List<SomeEntity> selectPage(RowBounds rowBounds);
2. 排序參數的使用
PageHelper 支持排序功能,我們可以在分頁查詢的時候指定排序欄位和排序方向,如下所示:
PageHelper.orderBy("id DESC");
在使用 PageHelper.orderBy 方法時,需要注意使用大寫字母進行排序欄位的指定。
3. Mybatis Generator 自動生成代碼的情況
如果使用了 Mybatis Generator 自動生成的代碼,在生成的 Example 類中,我們需要使用類似如下的方式進行分頁查詢:
Example example = new Example(SomeEntity.class); example.createCriteria().andXXXEqualTo(XXX); // 排序 example.setOrderByClause("id DESC"); // 開始分頁 PageHelper.startPage(pageNum, pageSize); List<SomeEntity> list = someEntityMapper.selectByExample(example); // 封裝分頁結果 return new PageInfo<>(list);
在使用 Mybatis Generator 自動生成的代碼時,我們需要特別注意傳遞對象的方式和 Example 對象的使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/311310.html