一、自动填充封装
有一些字段需要自动填充而避免每次setter,比如创建时间和修改时间字段。
1. 自动填充步骤(共两步)
- 第一步:在需要自动填充的实体类上加上注解:@TableField(fill = FieldFill.INSERT)
@ApiModelProperty("创建时间")
@TableField(value = "gmt_create",fill = FieldFill.INSERT)
private Date gmtCreate;
@ApiModelProperty("更新时间")
@TableField(value = "gmt_modified",fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
- 第二步:实现MetaObjectHandler类并由Spring IOC容器管理,并重写insertFill和updateFill方法;
在service-base模块中添加创建包handler,创建自动填充类 MyMetaObjectHandler
@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);
}
}
由于MyMetaObjectHandler和调用的edu_service不在同一个子模块下,所以需要edu_service扫描 MyMetaObjectHandler所在的包。可以使用配置类@Import,可以使用@CommonScan
二、controller方法定义
1. 新增
@ApiOperation("新增讲师功能")
@PostMapping
public Resault addTeacher(@RequestBody EduTeacher eduTeacher){
boolean flag = eduTeacherService.save(eduTeacher);
if(flag){
return Resault.ok();
}else {
return Resault.error();
}
}
2. 修改
做修改钱一般需要先根据ID查询出结果,然后再做修改
@ApiOperation("根据id,查询讲师")
@GetMapping("/getTeacherById/{id}")
public Resault getTeacherById(@PathVariable String id){
EduTeacher eduTeacher = eduTeacherService.getById(id);
return Resault.ok().data("teacher",eduTeacher);
}
@ApiOperation("修改讲师")
//@PostMapping("/editteacher")
@PutMapping("/editteacher")
public Resault EditTeacher(@RequestBody EduTeacher eduTeacher){
boolean edit = eduTeacherService.updateById(eduTeacher);
if(edit){
return Resault.ok();
}else {
return Resault.error();
}
}