- 首先在config也就是配置文件夹中添加Mybatis-plusConfig类
@Configuration --相当于applacation.xml
public class MybatisPlusConfig {
@Bean --交由Spring管理
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 加入一个插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
- addInnerInterceptor(new PaginationInnerInterceptor())相当于加入的拦截器,而PaginationInnerInterceptor()是MybatisPlus提供的分页插件方法。
// 由于前端发送的GET请求 这里需要用到@GetMapping
@GetMapping("/page")
public R<Page> page(int page, int pageSize,String name){
log.info("page = {}, pageSize = {},name = {}",page,pageSize,name);
// 构造分页构造器
Page pageInfo = new Page(page,pageSize);
// 构造条件构造器
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();
// 添加过滤条件
queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
// 添加排序条件
queryWrapper.orderByDesc(Employee::getUpdateTime);
// 执行查询
employeeService.page(pageInfo,queryWrapper);
return R.success(pageInfo);
}
- 动态封装使用LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
- queryWraper.like相当于数据库的模糊查询,提供是三个参数,第一个参数为布尔值,true就执行,第二个参数为数据库中相对应的字段,第三个参数为要模糊查询的值
queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
- queryWrapper基本提供了大多数简单查询的封装方法,如排序,具体如下 (其中参数为查询条件==>按照updateTime排序)
queryWrapper.orderByDesc(Employee::getUpdateTime);
- MybatisPlus提供的page方法,将前端传过来的分页条数和分页页数pageInfo和数据库查询出来的数据queryWrapper进行整合,也就是我们说的进行分页。
employeeService.page(pageInfo,queryWrapper)
这里不需要返回数据是因为page已经将封装好的数据复制给相对应的对象,比如records,total,size已经被赋值,只要把pageInfo返回去就可以了
return R.success(pageInfo);