目录
1 前言
我们常常会使用PageHelper来完成分页查询业务代码的开发,但是没想到Mybatis plus居然想抢老大哥的饭碗。是的,使用Mybatis plus也能完成分页查询的开发,以后又多了一种方法,具体如下。
本文参考自黑马程序员。
2 使用方法
2.1 添加配置类
模板代码,多说无益,直接CV:
@Configuration
public class MyBatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 1.创建分页插件
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
//最大分页限制为1000条记录,可选
//paginationInnerInterceptor.setMaxLimit(1000L);
// 2.添加分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
2.2 基本的使用
使用方法和PageHelper大同小异,看看就明白了,也基本模板,如下:
void PageQuery() {
//页码为2,每页大小为3
int pageNo = 2, pageSize = 3;
// 1.准备分页条件
Page<User> page = Page.of(pageNo, pageSize);
// 2.分页查询
Page<User> p = userService.page(page);
// 3.解析
long total = p.getTotal();
long pages = p.getPages();
List<User> users = p.getRecords();
//其它代码...
}
2.3 进阶使用(排序的使用)
@Override
public PageDTO<UserVO> queryUsersPage(UserQuery query) {
//其它代码...
//构建分页条件
Page<User> page = Page.of(pageNo, pageSize);
//排序条件的设置,getSortBy()设置排序条件字段,getIsAsc()升序还是降序
page.addOrder(new OrderItem(query.getSortBy(),query.getIsAsc()));
//分页查询
Page<User> p = lambdaQuery()
.like(name != null, User::getUsername, name)
.eq(status != null, User::getStatus, status)
.page(page);
//封装VO结果
//其它代码...
}
3 最后
其实还可以将其中的重复代码写成方法,算是plusProMax版的使用吧。