Mybatis-plus之分页条件查询的实现

    科技2022-07-12  151

    1. 条件

    :封装所有的查询条件为一个Vo对象。

    @ApiModel(value = "Course查询对象", description = "课程查询对象封装") @Data public class CourseListVo { @ApiModelProperty(value = "课程名称") private String title; @ApiModelProperty(value = "课程发布状态") private String status; @ApiModelProperty(value = "一级类别id") private String subjectParentId; @ApiModelProperty(value = "二级类别id") private String subjectId; }

    2. 分页

    :创建配置类,引入分页插件

    @Configuration @MapperScan("com.demo.mapper") public class EduConfig { //分页插件 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }

    3. 查询

    controller层 @ApiOperation(value ="课程列表") @GetMapping("getCourseList/{current}/{limit}") public R getCourseList( @PathVariable Long current, //当前页 @PathVariable Long limit, //要查询记录数 CourseListVo courseListVo //查询条件封装的对象 ){ //创建一个Page对象,传入当前页和要查询记录数 Page<EduCourse> pageCourse=new Page<>(current,limit); //调用服务层的查询方法,传入Page对象和查询条件对象 eduCourseService.pageCourseQuery(pageCourse,courseListVo); //查询结束之后,Page对象就存在数据了,此时可以 //通过该Page对象获取对应的行记录和总记录数 List<EduCourse> rows = pageCourse.getRecords(); long total = pageCourse.getTotal(); //统一返回结果 return R.ok().data("total",total).data("rows",rows); } service接口层 //定义pageCourseQuery方法,指定参数Page对象及查询条件对象 void pageCourseQuery(Page<EduCourse> pageCourse, CourseListVo courseListVo); service实现层 public void pageCourseQuery(Page<EduCourse> pageCourse, CourseListVo courseListVo) { //创建查询queryWrapper对象 QueryWrapper<EduCourse> queryWrapper=new QueryWrapper<>(); //根据创建时间排序 queryWrapper.orderByDesc("gmt_create"); //判断此时的条件对象Vo是否等于空,若等于空, //直接进行selectPage查询 if(courseListVo==null){ baseMapper.selectPage(pageCourse,queryWrapper); } //若Vo对象不为空,分别获取其中的字段, //并对其进行判断是否为空,这一步类似动态SQL的拼装 String title = courseListVo.getTitle(); String status = courseListVo.getStatus(); String subjectParentId = courseListVo.getSubjectParentId(); String subjectId = courseListVo.getSubjectId(); if(!StringUtils.isEmpty(title)){ queryWrapper.like("title",title); } if(!StringUtils.isEmpty(status)){ queryWrapper.eq("status",status); } if(!StringUtils.isEmpty(subjectParentId)){ queryWrapper.eq("subject_parent_id",subjectParentId); } if(!StringUtils.isEmpty(subjectId)){ queryWrapper.eq("subject_id",subjectId); } //最后调用selectPage方法,传入Page对象及queryWrapper对象 baseMapper.selectPage(pageCourse,queryWrapper); }
    Processed: 0.014, SQL: 8