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);
}