PageHelper分頁插件及PageInfo介紹及使用
轉載鏈接
1. MyBatis分頁插件-PageHelper的配置
<!-- pagehelper :分頁插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<!-- pagehelper的依賴包:jsqlparser -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.5</version>
</dependency>
2.配置攔截器插件:
- mybatis-config.xml全局配置文件中
<!--
plugins在配置文件中的位置必須符合要求,否則會報錯,順序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!-- com.github.pagehelper為PageHelper類所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
3.PageInfo屬性表
//當前頁
private int pageNum;
//每頁的數量
private int pageSize;
//當前頁的數量
private int size;
//由於startRow和endRow不常用,這里說個具體的用法
//可以在頁面中"顯示startRow到endRow 共size條數據"
//當前頁面第一個元素在數據庫中的行號
private int startRow;
//當前頁面最后一個元素在數據庫中的行號
private int endRow;
//總記錄數
private long total;
//總頁數
private int pages;
//結果集
private List<T> list;
//前一頁
private int prePage;
//下一頁
private int nextPage;
//是否為第一頁
private boolean isFirstPage;
//是否為最后一頁
private boolean isLastPage;
//是否有前一頁
private boolean hasPreviousPage;
//是否有下一頁
private boolean hasNextPage;
//導航頁碼數
private int navigatePages;
//所有導航頁號
private int[] navigatepageNums;
//導航條上的第一頁
private int navigateFirstPage;
//導航條上的最后一頁
private int navigateLastPage;
public PageInfo() {
this.isFirstPage = false;
this.isLastPage = false;
this.hasPreviousPage = false;
this.hasNextPage = false;
}
4.邏輯分頁
- 有時候分頁邏輯完全在controller層寫,service完全返回集合數據而已。
// service層
public PageInfo<T> methodName(int pageNum, int pageSize) {
//1 設置分頁
PageHelper.startPage(pageNum, pageSize);
//2 查詢
List<T> list =TMapper.mapperMethod();
//3 返回
return new PageInfo<>(list);
}
// controller層
public @ResponseBody DataGridResultInfo methodName (Vo vo){
//1 查詢
PageInfo<T> pageInfo = service. methodName (vo.getPage(), vo.getRows());
//2 封裝
return new DataGridBean(pageInfo.getTotal() , pageInfo.getList() );
}