Java项目实战5——新增修改时公共字段自动填充

@TOC
在对对象进行修改或者新增的时候,有一些公共的字段需要我们进行填充。mybatis-plus也为我们提供了这种开箱即用的特性。
比如我们对对象的修改时间、新增时间、修改人、新增人这几个公共字段进行自动填充。

@TableField

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Schema(title = "创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;

@Schema(title = "修改时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;

@Schema(title = "创建者")
@TableField(fill = FieldFill.INSERT)
private String createUser;

@Schema(title = "修改者")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateUser;
JAVA

其中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入时填充字段
*/
INSERT,
/**
* 更新时填充字段
*/
UPDATE,
/**
* 插入和更新时填充字段
*/
INSERT_UPDATE
}
JAVA

编写Handle

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
27
28
29
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

@Override
public void insertFill(MetaObject metaObject) {
//根据实际场景进行编写
this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "createUser", String.class, "用户xxx");

this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "updateUser", String.class, "用户xxx");
}

@Override
public void updateFill(MetaObject metaObject) {
//根据实际场景进行编写
this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "updateUser", String.class, "用户xxx");
}
}

JAVA

测试

新增或者修改的时候,公共字段我们无需再次手动注入,执行新增或者修改操作后,我们发现公共字段已自动注入填充,并保存到数据库。


Java项目实战5——新增修改时公共字段自动填充
https://leehoward.cn/2022/07/03/Java项目实战5——新增修改时公共字段自动填充/
作者
lihao
发布于
2022年7月3日
许可协议