MyBatisPlus分页查询

MyBatisPlus插件整合分页查询功能

使用的环境如下

环境 版本
系统 macOS 10.15.4
JDK 8
Maven 3
MyBatisPlus 3.4.3

关于搭建MyBatisPlus的内容可以参考这篇文章:Springboot整合MyBatisPlus
废话不多说,直接上代码

配置类

新版本的MP,在config包下面建一个配置类,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Configuration
public class MybatisPlusConfig {

/**
* 分页插件
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}

}

数据库

简单创建一张表

1
2
3
4
5
6
7
8
9
10
CREATE TABLE `t_demo` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`code` varchar(20) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`create_user` bigint(255) NOT NULL,
`create_time` datetime NOT NULL,
`update_user` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

实体类

Demo实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Data
@TableName(value = "t_demo")
public class Demo implements Serializable {

private static final long serialVersionUID = -3906522870557549136L;

private Long id;
private String code;
private String name;
private Long createUser;
private Date createTime;
private Long updateUser;
private Date updateTime;

}

PageVO实体类

List<T>存放列表数据

1
2
3
4
5
6
7
8
9
10
11
@Data
public class PageVO<T> implements Serializable {

private static final long serialVersionUID = -182574099663892610L;

private Long current;
private Long size;
private Long total;
private List<T> list;

}

Controller

控制器中写一个查询的接口(此处代码可以封装到BaseController内,为了演示方便,故提出来)

  1. 定义一个IPage<T>类型的分页实例
    T是实体类
    current表示当前第几页,从0开始
    size表示每页的页数
  2. 调用Service的page()方法(肯定得是继承MyBatisPlus的IService类)
    此时,iPage里面已经把查询出来的数据封装进去了
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    @RestController
    @RequestMapping("/demo")
    public class DemoController {

    @Autowired
    private DemoService demoService;

    @GetMapping("/listPage")
    @Override
    public ServerResponse<PageVO<Demo>> listPage(Integer current, Integer size){
    // 分页查询
    IPage<T> iPage = new Page<>(current, size);
    demoService.page(iPage);
    // 封装VO
    PageVO<T> pageVO = new PageVO<>();
    pageVO.setCurrent(iPage.getCurrent());
    pageVO.setSize(iPage.getSize());
    pageVO.setTotal(iPage.getTotal());
    pageVO.setList(iPage.getRecords());

    return ServerResponseUtil.success(pageVO);
    }
    }

Postman返回结果

通过Postman请求接口,返回如下结果
Postman返回结果
可以看到接口返回的数据已经通过PageVO进行封装,包含了分页的查询数据了

如果文章对您有帮助,欢迎评论或打赏,感谢支持!