介绍两种常用的分页方式,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
    }
}