谷粒学院项目实战36——多条件组合分页查询

实现如下图功能。

alt 实现步骤如下。

(1)将查询条件传入接口。

一般把条件值封装成为一个对象,然后将封装对象(vo对象)传递到接口中。我们先在entity下建包vo,vo目录下创建TeacherQuery.java用于封装需要传递的数据。

@ApiModel(value = "Teacher查询对象", description = "讲师查询对象封装")
@Data
public class TeacherQuery implements Serializable {

    private static final long serialVersionUID = 1L;

    @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;

}

(2)编写多条件查询功能

    @PostMapping("pageTeacherCondition/{page}/{limit}")
    public R pageTeacherCondition(
    @ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page,
    @ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit,
    @RequestBody(required = fals) TeacherQuery teacherQuery) {
        Page<EduTeacher> teacherPage = new Page<>();
        QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
        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.toString())){
            //构造条件
            wrapper.eq("level",level);
        }
        if (!StringUtils.isEmpty(begin)){
            //构造条件,注意这里的参数名称与数据库对应,而不是属性
            wrapper.ge("gmt_create",begin);//ge:大于等于
        }
        if (!StringUtils.isEmpty(begin)){
            //构造条件
            wrapper.le("gmt_modified",end);//le:小于等于
        }
        eduTeacherService.page(teacherPage, wrapper);
        Long total = teacherPage.getTotal();
        List<EduTeacher> records = teacherPage.getRecords();
        Map map = new HashMap<>();
        map.put("total", total);
        map.put("records", records);
        return R.ok().data(map);
    }

在上面传递参数时使用了@RequestBody,该注解表示用json传参,将json数据封装到对象中,在实际开发中经常使用这个格式来传参,不过使用该注解需要配合@PostMapping使用才能得到查询结果,另外需要显示表示参数值可以为空,否则必须传参。另外@ResponseBody用于返回json数据。

java全栈日日学 文章被收录于专栏

java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事

全部评论

相关推荐

04-09 21:07
门头沟学院 Java
a了几道
明天也要十一点半之前起床:最恶心的一集。各个都会做,各个都做不对,乍一看开心坏了以为自己能 ak,结果是春招以来做得最垃圾的一次。第二题测试数据里面 k 为什么有 0,直接全错;第三题感觉自己啥情况都考虑了但是只有 60%。
投递拼多多集团-PDD等公司10个岗位 >
点赞 评论 收藏
分享
头像
03-25 16:22
南华大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务