mybatis

您所在的位置:网站首页 测试分页功能的快捷方法 mybatis

mybatis

2023-09-28 20:18| 来源: 网络整理| 查看: 265

在这里插入图片描述如上图所示,假设前端页面上显示的是一个讲师数据列表,其中包括了首页,上一页,下一页等等.前端展示虽然挺明了的,但是后端的数据库是怎么实现按条件调出json格式的数据呢.这就是一个令人头疼的问题了.但是问题还是需要解决的,所以我们应该这么做. 第一步:把条件值传递到接口中 把条件值封装到对象里面,再把对象传递到接口里面. 所以建一个实体类,专门用于存条件的属性.

package com.qiu.eduservice.entity.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @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; }

然后在控制器中去编写逻辑代码.

//4.条件查询带分页 @GetMapping("pageTeacherCondition/{current}/{limit}") public R pageTeacherCondition(@PathVariable long current, @PathVariable long limit, TeacherQuery teacherQuery){ //创建一个page对象 Page pageTeacher = new Page(); //构建条件 QueryWrapper queryWrapper = new QueryWrapper(); //多条件组合查询,mybatis学过动态sql String name = teacherQuery.getName(); Integer level = teacherQuery.getLevel(); String begin = teacherQuery.getBegin(); String end = teacherQuery.getEnd(); //判断条件值是否为空,如果不为空,拼接条件 if (!StringUtils.isEmpty(name)){ queryWrapper.like("name",name); } if (!StringUtils.isEmpty(level)){ queryWrapper.eq("level",level); } if (!StringUtils.isEmpty(begin)){ queryWrapper.ge("gmt_create",begin);//这里加的是表中的字段名称,ge 大于等于 } if (!StringUtils.isEmpty(end)){ queryWrapper.le("gmt_create",end);//le 小于等于 } //调用方法实现条件分页查询 teacherService.page(pageTeacher,queryWrapper); long total = pageTeacher.getTotal();//总记录数 //方式一 List records = pageTeacher.getRecords();//数据list的集合 Map map = new HashMap(); map.put("total",total); map.put("rows",records); return R.ok().data(map); }

进行一个接口的测试: 在这里插入图片描述在这里插入图片描述注意一个问题: responseBody 返回数据,返回json数据

requestBody 使用json来传递数据,把json数据封装到对应对象里面 如:前端传来的数据,会变成json格式封装到对象中

注意:如果后端传对象使用了requestBody注解,就需要使用post提交方式 在这里插入图片描述在这里插入图片描述由于前端的条件值可以都不设置,所以在requestBody中需要加上required=false.表示这个值可以没有

在这里插入图片描述完整的controller代码:

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

这样修改之后我们来看看swagger的变化

在这里插入图片描述 这样我们传的就是json数据了.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3