介绍两种常用的分页方式,github的PageHelper和MyBatis-Plus自带的分页
一、使用PageHelper分页
1、引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
2、封装请求类
public class PageRequest<T> {
private T data;
private int pageNum;
private int pageSize;
... ... //get set 方法
}
3、代码示例
@RequestMapping("/find")
public PageInfo<User> findByWhere(@RequestBody PageRequest<User> request) {
PageHelper.startPage(request.getPageNum(),request.getPageSize());
List<User> list = userService.findByWhere(request.getData());
PageInfo pageInfo = new PageInfo(list);
return pageInfo;
}
4、传参示例
{
"data":{
"name":"测试"
},
"pageNum":"1",
"pageSize":"10"
}
二、使用MyBatis-Plus自带分页
1、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
2、请求封装类
public class PageRequest<T> {
private T data;
private Page page;
public PageRequest() {
}
... ... //get set 方法
}
3、创建分页插件Bean
@Configuration
public class PageConfig {
public PageConfig() {
}
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
4、代码示例
@RequestMapping("/find")
public IPage<User> findByWhere(@RequestBody PageRequest<User> request) {
Page page = request.getPage();
List<User> list = userService.findByWhere(request);
page.setRecords(list);
return page;
}
//注意:Mapper或Dao中参数要有IPage
List<User> findByWhere(IPage<?> page,@Param("user") User user);
5、参数示例
{
"data":{
"name":"测试"
},
"page":{
"size":10,
"current":1
}
}