实战项目-03(讲师的分页查询和条件查询,添加,修改)
作者:互联网
讲师的分页查询
MybatisPlusConfig中配置分页插件
在config中的EduConfig配置分页插件
/**
* 配置分页的插件
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
编写分页controller中的方法
//分页查询(1. 增加插件 2. 创建page对象
@ApiOperation(value = "分页查询讲师")
@GetMapping("pageTeacher/{current}/{limit}")//current:当前页,limit:记录数
public R pageListTeacher(@ApiParam(name = "current" , value = "当前页" , required = true) @PathVariable long current,
@ApiParam(name = "limit" , value = "记录数" , required = true) @PathVariable long limit){
//创建page对象
Page<EduTeacher> pageTeacher = new Page<>(current,limit);
//调用方法实现分页(调用方法的时候,底层封装,把分页所有数据封装到pageTeacher对象里面)
teacherService.page(pageTeacher,null);
long total = pageTeacher.getTotal();//总记录数
List<EduTeacher> records = pageTeacher.getRecords();//数据的list集合
return R.ok().data("total",total).data("rows",records);
}
多条件组合查询带分页
页面类似
1. 需要把条件值传递到接口里面(vo)
在实体类中添加vo包在vo包中添加TeacherQuery
package com.sli.eduservice.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author 1_f_
* @create 2021-10-16 16:40
*/
//次类用于数据的封装
@Data
public class TeacherQuery {
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. 根据条件值进行判断,拼接条件(controller中增加方法)
- RequestBody 需要使用post的提交方式,使用json传递数据,将json数据封装到对应的对象里面(往里面传),通俗点说就是接收前端传递给后端的json字符串中的数据的(请求体中的数据的)
- ResponseBody 将java对象转为json的格式,通俗点说就是往前端传输需要的json数据
//条件查询带分页
@ApiOperation(value = "条件分页查询讲师")
@PostMapping("pageTeacherCondition/{current}/{limit}")
public R pageTeacherCondition(@ApiParam(name = "current" , value = "当前页" , required = true) @PathVariable long current,
@ApiParam(name = "limit" , value = "记录数" , required = true) @PathVariable long limit,
@RequestBody(required = false) TeacherQuery teacherQuery){
//创建一个page对象
Page<EduTeacher> pageTeacher = new Page<>(current,limit);
//构架wrapper条件
QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
//多条件组合查询(动态sql)
//判断条件值是否为空,如果不为空,则拼接条件
String name = teacherQuery.getName();
Integer level = teacherQuery.getLevel();
String begin = teacherQuery.getBegin();
String end = teacherQuery.getEnd();
//stringutils是import org.springframework.util.StringUtils;包中的
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);
}
讲师添加功能
1. 需要自动填充创建时间以及修改时间
在service_base中创建包handler创建自动填充类MyMetaObjectHandler,重写其中的两个方法
package com.sli.servicebase.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @author 1_f_
* @create 2021-10-16 17:21
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//此处传递的实体类是属性名称,不是表中的字段名称
this.setFieldValByName("gmtCreate", new Date() , metaObject);
this.setFieldValByName("gmtModified", new Date() , metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified", new Date() , metaObject);
}
}
2. 在实体类添加自动填充注解
3. controller中定义方法
//添加讲师的接口
@ApiOperation(value = "添加讲师")
@PostMapping("addTeacher")
public R addTeacher(@RequestBody EduTeacher eduTeacher){
boolean save = teacherService.save(eduTeacher);
if (save){
return R.ok();
}else {
return R.error();
}
}
//修改讲师的接口,根据id查询,然后修改
//1.根据id查询
@ApiOperation(value = "根据id查询讲师")
@GetMapping("getTeacher/{id}")
public R getTeacher(@PathVariable String id){
EduTeacher eduTeacher = teacherService.getById(id);
return R.ok().data("teacher",eduTeacher);
}
//讲师修改功能
@ApiOperation(value = "修改讲师")
@PostMapping("updateTeacher")
public R updateTeacher(@RequestBody EduTeacher eduTeacher){
boolean flag = teacherService.updateById(eduTeacher);
if (flag){
return R.ok();
}else {
return R.error();
}
}
查询用get请求 添加用post请求 修改用put 删除用delete
标签:03,分页,value,查询,pageTeacher,讲师,public 来源: https://www.cnblogs.com/sli1f/p/15417717.html