Mybatis-Plus公共字段填充处理
WuCheng

问题描述

在添加以及修改数据时,设置crate_time、update_time的时候经常需要重复的为字段设置相应的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
   @PostMapping
public R<String> sava(HttpServletRequest request, @RequestBody Employee employee) {
...
//设置当前创建时间
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());
//设置操作人的ID
employee.setCreateUser(empID);
employee.setUpdateUser(empID);
...
return R.success("添加成功");
}

@PutMapping
public R<String> update(HttpServletRequest request,@RequestBody Employee employee){
...
//更新时间
employee.setUpdateTime(LocalDateTime.now());
//操作人的ID
employee.setUpdateUser(empID);
...
return R.success("修改成功");
}

我们希望在增加/更新操作的时候自动填充字段为当前的时间而不用重复设置这些字段的值

解决方法

Mybatis Plus提供了公共字段填充的功能,只需要在Bean对象中的字段上添加注解 @TableField并设置行为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Data
public class Employee implements Serializable {
...
@TableField(fill = FieldFill.INSERT) //插入时填充字段
private LocalDateTime createTime;

@TableField(fill = FieldFill.INSERT_UPDATE) //插入和更新时填充字段
private LocalDateTime updateTime;

@TableField(fill = FieldFill.INSERT) //插入时填充字段
private Long createUser;

@TableField(fill = FieldFill.INSERT_UPDATE) //插入和更新时填充字段
private Long updateUser;

}

然后再实现接口 MetaObjectHandler即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Component
@Slf4j
public class MyMateObjectHandler implements MetaObjectHandler {

/**
* 插入操作时自动填充
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
metaObject.setValue("createTime", LocalDateTime.now());
metaObject.setValue("createUser",new Long(1));
metaObject.setValue("updateTime", LocalDateTime.now());
metaObject.setValue("updateUser",new Long(1));
}

/**
* 更新操作时自动填充
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
metaObject.setValue("updateTime", LocalDateTime.now());
metaObject.setValue("updateUser",new Long(1));
}
}
  • 本文标题:Mybatis-Plus公共字段填充处理
  • 本文作者:WuCheng
  • 创建时间:2023-10-19 23:29:42
  • 本文链接:https://www.wucheng.work/2023/10/19/Mybatis-Plus公共字段填充处理/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!