一、MybatisPlus分页查询依赖分页插件
1. MpConfig配置类,SpringConfig导入MpConfig配置类
public class MpConfig {
@Bean //PaginationInnerInterceptor分页插件
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
@Configuration
@Import(value = {SwaggerConfig.class,MpConfig.class})
public class SpringConfig {
}
2. Page分页类
@ApiOperation("分页查询功能")
@GetMapping("/page/{page}/{pagesize}")
public Resault pageListTeacher(@PathVariable("page") long page,@PathVariable("pagesize") long pagesize){
Page<EduTeacher> eduTeacherPage = new Page<>(page,pagesize);
eduTeacherService.page(eduTeacherPage,null);
return Resault.ok().data("rows",eduTeacherPage.getRecords())
.data("total",eduTeacherPage.getTotal());
}
二、带条件分页查询
根据讲师名称name,讲师头衔level、讲师入驻时间gmt_create(时间段)查询。一般我们会把条件封装到Vo类中。
1. Vo类:在entity新增Vo包
@Data
public class TeacherQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("讲师姓名")
private String name;
@ApiModelProperty("头衔 1高级讲师 2首席讲师")
private Integer level;
@ApiModelProperty(value = "查询开始时间", example = "2019-01-01 10:10:10")
private String begin;//注意,这里使用的是String类型,前端传过来的数据无需进行类型转换
@ApiModelProperty(value = "查询结束时间", example = "2019-12-01 10:10:10")
private String end;
}
2. Controller中按条件查询
@ApiOperation("根据条件分页查询功能")
@PostMapping("/pageQuery/{page}/{pagesize}")
public Resault pageQuery(@PathVariable("page") long page, @PathVariable("pagesize") long pagesize,
@RequestBody(required = false) TeacherQueryVo teacherQueryVo){
Page<EduTeacher> eduTeacherPage = new Page<>(page,pagesize);
LambdaQueryWrapper<EduTeacher> wrapper = new LambdaQueryWrapper<>();
wrapper.like(ObjectUtils.isNotEmpty(teacherQueryVo.getName()),EduTeacher::getName,teacherQueryVo.getName());
wrapper.eq(ObjectUtils.isNotEmpty(teacherQueryVo.getLevel()),EduTeacher::getLevel,teacherQueryVo.getLevel());
wrapper.ge(ObjectUtils.isNotEmpty(teacherQueryVo.getBegin()),EduTeacher::getGmtCreate,teacherQueryVo.getBegin());
wrapper.eq(ObjectUtils.isNotEmpty(teacherQueryVo.getEnd()),EduTeacher::getGmtCreate,teacherQueryVo.getEnd());
eduTeacherService.page(eduTeacherPage,wrapper);
return Resault.ok().data("rows",eduTeacherPage.getRecords())
.data("total",eduTeacherPage.getTotal());
}
注:@RequestBody注解接收json格式的入参,必须与@PostMapping搭配使用。required=false表示非必填。