分頁插件依賴:
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
application.yml添加配置:
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
分頁參數類PageRequest.java
/**
* description: 分頁參數
*
* @author sanchar
* @date 12/12/2018 19:26
* lastUpdateBy: sanchar
* lastUpdateDate: 12/12/2018
*/
public class PageRequest {
private int page;
private int size;
private String sort;
public PageRequest() {}
public PageRequest(int page, int size) {
this(page, size, null);
}
public PageRequest(int page, int size, String sort) {
this.page = page;
this.size = size;
this.sort = sort;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
}
查詢方法function接口:
/**
* description: Select
*
* @author sanchar
* @date 12/13/2018 12:46
* lastUpdateBy: sanchar
* lastUpdateDate: 12/13/2018
*/
@FunctionalInterface
public interface Select<E> {
List<E> doSelect();
}
自定義PageHelper:
**
* description:
*
* @author sanchar
* @date 12/13/2018 12:11
* lastUpdateBy: sanchar
* lastUpdateDate: 12/13/2018
*/
public class PageHelper extends PageMethod {
public PageHelper() {
}
public static <E> PageInfo<E> doPage(PageRequest pageRequest, Select select) {
startPage(pageRequest.getPage(), pageRequest.getSize());
List<E> list = select.doSelect();
PageInfo<E> pageInfo = new PageInfo<>(list);
return pageInfo;
}
}
使用PageHelper參考(service實現層):
@Override
public PageInfo<Demo> pageQuery(PageRequest pageRequest, Demo demo) {
return PageHelper.doPage(pageRequest, () -> demoMapper.select(demo));
}