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);
    }
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT学习小镇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值