搜索查询的条件:姓名、级别、开始时间、结束时间

开发中通常做法:把条件值封装到对象里面,把对象传递到接口中去 vo值传递 

//在entity里面添加一个vo包,写一个查询条件的属性类

@Data
public class TeacherQuery {

    @ApiModelProperty(value = "教师名称,模糊查询")
    private String name;

    @ApiModelProperty(value = "头衔 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;
}

写具体的查询带分页的方法

根据值判断拼接条件    在判断条件值是否为空的时候使用工具类:StringUtils.isEmpty  姓名 like  级别 eq  开始时间  ge   结束时间  le

 

@RequestBody:使用json传递数据,把json数据封装到对应对象里面      
使用这个的时候 需要使用post提交方式 get请求得不到值 使用 @PostMapping 不使用GetMapping
需要加上 required = false 表示参数值可以为空
@ResponseBody:返回数据,返回json数据

 

//Controller
//
4 条件查询带分页的方法 @PostMapping("pageTeacherCondition/{current}/{limit}") public R pageTeacherCondition(@PathVariable long current,@PathVariable long limit, @RequestBody(required = false) TeacherQuery teacherQuery) { //创建page对象 Page<EduTeacher> pageTeacher = new Page<>(current,limit); //构建条件 QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>(); // 多条件组合查询 // mybatis学过 动态sql String name = teacherQuery.getName(); Integer level = teacherQuery.getLevel(); String begin = teacherQuery.getBegin(); String end = teacherQuery.getEnd(); //判断条件值是否为空,如果不为空拼接条件 if(!StringUtils.isEmpty(name)) { //构建条件 wrapper.like("name",name); } if(!StringUtils.isEmpty(level)) { wrapper.eq("level",level); } if(!StringUtils.isEmpty(begin)) { wrapper.ge("gmt_create",begin); } if(!StringUtils.isEmpty(end)) { wrapper.le("gmt_create",end); } //调用方法实现条件查询分页 teacherService.page(pageTeacher,wrapper); long total = pageTeacher.getTotal();//总记录数 List<EduTeacher> records = pageTeacher.getRecords(); //数据list集合 return R.ok().data("total",total).data("rows",records); }

面试小技巧:一般问道用过哪些注解的时候可以说:@PathVariable @RequestBody @ResponBody

posted on 2020-11-24 09:40  LeavesCai7  阅读(99)  评论(0)    收藏  举报