文章目錄
- 一、簡介
- 二、集成步驟
- 三、使用方法
- 四、注意事項
- 五、高級用法
一、簡介
PageHelper 是一個開源的 MyBatis 分頁插件,它可以幫助我們在使用 MyBatis 進行數據庫操作時方便地實現分頁功能。通過簡單的配置和少量的代碼修改,就可以在查詢數據時實現分頁效果,大大提高了開發效率。
二、集成步驟
- 添加依賴
如果你使用的是 Maven 項目,在 pom.xml 中添加以下依賴:
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>最新版本號</version>
</dependency>
你可以在 Maven 中央倉庫 中查找最新的版本號。
- 配置 PageHelper
如果你使用的是 Spring Boot 項目,PageHelper 會自動進行配置,無需額外的配置。如果是傳統的 Spring 項目,需要在 MyBatis 的配置文件中添加 PageHelper 的插件配置:
<plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"><!-- 配置參數,根據需要進行調整 --><property name="reasonable" value="true"/><property name="supportMethodsArguments" value="true"/><property name="params" value="count=countSql"/></plugin>
</plugins>
配置參數說明:
reasonable:分頁合理化參數,默認值為 false。當該參數設置為 true 時,pageNum 小于 1 會查詢第一頁,pageNum 大于總頁數會查詢最后一頁。
supportMethodsArguments:支持通過 Mapper 接口參數來傳遞分頁參數,默認值為 false。
params:為了支持 startPage(Object params) 方法,增加了該參數來配置參數映射,用于從對象中根據屬性名取值。
三、使用方法
基本分頁查詢
在需要進行分頁查詢的方法中,調用 PageHelper.startPage 方法來開啟分頁功能,然后執行查詢操作。示例代碼如下:
@Override
public JsonVO<PageInfo<XiangXiDanJvVO>> listXiangXiDanJv(XiangXiDanJvQuery query) {try {// 1. 啟動分頁PageHelper.startPage((int) query.getPageIndex(), (int) query.getPageSize());// 2. 執行查詢(會被 PageHelper 攔截)List<XiangXiDanJvVO> list = inspurMapper.listXiangXiDanJv(query);// 3.用pageInfo包裝PageInfo<XiangXiDanJvVO> page = new PageInfo<>(list);return JsonVO.success(page );} catch (Exception e) {log.error("分頁查詢詳細單據失敗:{}", e.getMessage());return JsonVO.fail(null);}
}
四、注意事項
-
分頁方法調用順序
PageHelper.startPage 方法必須在執行查詢方法之前調用,否則分頁功能將失效。 -
多次分頁問題
在同一個方法中,如果需要進行多次分頁查詢,每次查詢前都需要調用 PageHelper.startPage 方法開啟分頁功能。 -
事務問題
在使用事務時,需要確保 PageHelper.startPage 方法在事務內部調用,否則可能會出現分頁不準確的問題。
五、高級用法
- 排序功能
PageHelper 支持在分頁查詢時進行排序。可以通過 PageHelper.startPage 方法的第三個參數來指定排序規則,示例代碼如下:
PageHelper.startPage(pageNum, pageSize, "id DESC");
List<User> userList = userMapper.selectAllUsers();
上述代碼表示按照 id 字段降序排序。