Spring Boot入門系列(十六)使用pagehelper實現分頁功能
- 2020 年 6 月 28 日
- 筆記
- SpringBoot入門系列
之前講了Springboot整合Mybatis,然後介紹了如何自動生成pojo實體類、mapper類和對應的mapper.xml 文件,並實現最基本的增刪改查功能。接下來要說一說Mybatis 的分頁功能:使用Mybatis-PageHelper插件,實現分頁功能。Spring Boot入門系列文章://www.cnblogs.com/zhangweizhong/category/1657780.html
一、pagehelper介紹
pageHelper是一款非常簡單、易用的分頁插件,它能很好的集成在spring boot中。它是一個基於mybatis的一款插件,所以我們在使用它時,我們需要使用mybatis作為持久層框架。
github地址是//github.com/pagehelper/Mybatis-PageHelper。
二、快速開始
如果我們需要使用pageHelper的話,我們需要在spring boot項目中引入pageHelper的依賴。之前介紹過Spring Boot整合mybatis,這裡就不介紹了。《Spring Boot入門系列(六)Spring Boot如何使用Mybatis XML 配置版【附詳細步驟】》 。
1、pom 配置
增加pageHelper的依賴
<!-- pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency>
注意:spring boot 引入的jar包必須是要pagehelper-spring-boot-starter ,
如果單獨引入pagehelper
的話,會提示錯誤。
2、application.properties增加pagehelper 配置
# 分頁框架 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql
說明:
helperDialect : 指定數據庫,可以不配置,pagehelper插件會自動檢測數據庫的類型。
resonable : 分頁合理化參數默認false,當該參數設置為true 時,pageNum <= 0 時,默認顯示第一頁,pageNum 超過 pageSize 時,顯示最後一頁。
params : 用於從對象中根據屬性名取值,可以配置pageNum,pageSize,count 不用配置映射的默認值。
supportMethodsArguments : 分頁插件會根據查詢方法的參數中,自動根據params 配置的字段中取值,找到合適的值會自動分頁。
到這裡配置就完成了,在Springboot中整合就是這麼簡潔,約定大約配置的方式,大量的減少了配置文件的使用 。
3、實現分頁
在原來的UserService類和UserServiceImpl 類中,增加 queryUserListPaged 接口和對應的方法實現。
@Override public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) { // 開始分頁 PageHelper.startPage(page,pageSize); Example example = new Example(SysUser.class); Example.Criteria criteria = example.createCriteria(); if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) { criteria.andLike("username", "%" + user.getUsername() + "%"); } if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) { criteria.andLike("nickname", "%" + user.getNickname() + "%"); } List<SysUser> userList = userMapper.selectByExample(example); return userList; }
分頁的核心就一行代碼, PageHelper.startPage(page,pageSize); 這個就標識開始分頁。加了這個之後pagehelper 插件就會通過其內部的攔截器,將執行的sql語句,轉化為分頁的sql語句。
注意:使用時PageHelper.startPage(pageNum, pageSize)一定要放在列表查詢的方法中,這樣在查詢時會查出相應的數據量且會查詢出總數。
4、在原來的MybatisController 控制器中增加如下方法:
@RequestMapping("/queryUserListPaged") public JSONResult queryUserListPaged(Integer page) { if (page == null) { page = 1; } int pageSize = 10; SysUser user = new SysUser(); List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize); return JSONResult.ok(userList); }
說明:
調用的方法,只需將page頁碼,和pageSize 每頁多少條這兩個字段傳入即可。
最後
以上,就把Spring Boot集成pagehelper插件,實現分頁功能介紹完了。還是比較簡單的。
這個系列課程的完整源碼,也會提供給大家。大家關注我的微信公眾號(架構師精進),回復:springboot源碼。獲取這個系列課程的完整源碼。