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

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. 查询

  1. 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);
    }
  1. service接口层
//定义pageCourseQuery方法,指定参数Page对象及查询条件对象
void pageCourseQuery(Page<EduCourse> pageCourse, CourseListVo courseListVo);
  1. 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);
    }

你可能感兴趣的:(技术实践说,mybatis)