簡單使用
官網:https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter
在官網可以檢視PageHelper的maven坐标
①導入通用PageHelper的坐标
②在mybatis核心配置檔案中配置PageHelper插件
③測試分頁資料擷取
①導入通用PageHelper坐标
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
②在application.properties核心配置檔案中配置PageHelper插件
# 設定分頁插件
#pagehelper分頁插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
properties頁面詳解
- dialect:使用時必須指定該屬性,可選值為oracle,mysql,mariadb,sqlite,hsqldb,postgresql,沒有預設值,必須指定該屬性。
- reasonable:配置分頁參數合理化功能,預設是false。 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>總頁數會查詢最後一頁; #禁用合理化時,如果pageNum<1或pageNum>總頁數會傳回空資料。
- support-methods-arguments:支援通過Mapper接口參數來傳遞分頁參數,預設值false,分頁插件會從查
- 查詢方法的參數值中,自動根據上面 params 配置的字段中取值,查找到合适的值時就會自動分頁。
- params:為了支援startPage(Object params)方法,增加了該參數來配置參數映射,用于從對象中根據屬性名取值; 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用預設值, 預設值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
測試環境
@Test
public void testPageHelper() {
//設定分頁參數
PageHelper.startPage(1,2);
//設定查找到的資料集合,這邊要調用查詢所有資料的方法
List<admin> select = adminMapper.findAll();
//其他分頁的資料,第二個參數可選,表示導航頁顯示幾個
PageInfo<admin> pageInfo = new PageInfo<>(select,5);
//分頁相關參數
System.out.println("總條數:"+pageInfo.getTotal());
System.out.println("總頁數:"+pageInfo.getPages());
System.out.println("目前頁:"+pageInfo.getPageNum());
System.out.println("目前頁顯示的真實條數:"+pageInfo.getSize());
System.out.println("每頁顯示長度:"+pageInfo.getPageSize());
System.out.println("是否第一頁:"+pageInfo.isIsFirstPage());
System.out.println("是否最後一頁:"+pageInfo.isIsLastPage());
System.out.println("下一頁的頁碼:"+pageInfo.getNextPage());
System.out.println("上一頁的頁碼:"+pageInfo.getPrePage());
System.out.println("是否存在上一頁:"+pageInfo.isHasPreviousPage());
System.out.println("是否存在下一頁:"+pageInfo.isHasNextPage());
System.out.println("導航分頁的頁碼數,就是上面設定的5:"+pageInfo.getNavigatePages());
System.out.println("導航分頁的頁碼:"+
Arrays.toString(pageInfo.getNavigatepageNums()));
System.out.println(pageInfo.getList());
}
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiMGc902byZ2P5EDNyAjMldTMmZjY1MGO5QjNiRTZxUTO2YDM0EmYxM2LcBza5QTcsJja2FXLp1ibj1ycvR3Lc5Wanlmcv9CXt92YucWbp9WYpRXdvRnLzA3Lc9CX6MHc0RHaiojIsJye.jpg)
其實最後pageInfo.getList()可以擷取大部分内容,如下
Page{
count=true,
pageNum=1,
pageSize=2,
startRow=0,
endRow=2,
total=7,
pages=4,
reasonable=true,
pageSizeZero=false
}
[admin(id=4, username=張三, password=4321), admin(id=5, username=李四, password=21321)]
整合SpringBoot
Mapper
@Repository
//加上MapperScan之後就無需再寫@Mapper
public interface adminMapper {
//注解開發
@Select("select * from admin")
//查找所有資料
List<admin> findAll();
}
service層
接口
public interface adminService {
Map<String, Object> findAll(int pageNum,int pageSize);
}
實作類
@Service
public class adminServiceImpl implements adminService {
@Resource
private adminMapper adminMapper;
@Override
public Map<String,Object> findAll(int pageNum,int pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<admin> select = adminMapper.findAll();
PageInfo<admin> pageInfo = new PageInfo<>(select,5);
Map<String, Object> map = new HashMap<>();
map.put("total",pageInfo.getTotal());
map.put("pages",pageInfo.getPages());
map.put("data",pageInfo.getList());
map.put("size",pageInfo.getSize());
map.put("pageSize",pageInfo.getPageSize());
map.put("isIsFirstPage",pageInfo.isIsFirstPage());
map.put("isIsLastPage",pageInfo.isIsLastPage());
map.put("nextPage",pageInfo.getNextPage());
map.put("prePage",pageInfo.getPrePage());
map.put("isHasPreviousPage",pageInfo.isHasPreviousPage());
map.put("isHasNextPage",pageInfo.isHasNextPage());
return map;
}
}
controller
@Resource
private adminService adminService;
//查找所有資料
@GetMapping("findAll/{pageNum}/{pageSize}")
public Map<String, Object> findAll(@PathVariable int pageNum,
@PathVariable int pageSize){
return adminService.findAll(pageNum,pageSize);
}
運作結果
輸入4,2,目前頁面最後一頁
傳回内容