谷粒学苑项目-第一章讲师管理模块分页查询-1.6

一、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表示非必填。

猜你喜欢

转载自blog.csdn.net/weixin_51725434/article/details/128596537