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 {
@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内,为了演示方便,故提出来)
- 定义一个
IPage<T>类型的分页实例
T是实体类
current表示当前第几页,从0开始
size表示每页的页数
- 调用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); 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请求接口,返回如下结果

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