前言
在項(xiàng)目中,經(jīng)常會(huì)有一些公共字段,例如createUser,createTime,isDeleted等,需要全局賦值,來(lái)看看在Springboot中怎么做吧。
使用
填充類型
public enum FieldFill {
DEFAULT, //默認(rèn)
INSERT, //插入時(shí)填充
UPDATE, //更新時(shí)填充
INSERT_UPDATE; //插入和更新時(shí)填充
private FieldFill() {
}
}
使用方法
只需要在字段上添加@TableField注解,并設(shè)置注解屬性 fill = FieldFill.INSERT即可。
//實(shí)體類
@Data
public class Demo {
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@TableField(value = "create_user", fill = FieldFill.INSERT)
private String createUser;
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
}
@Configuration
public class MyBatisPlusConfig {
/**
* 解決了insert/update數(shù)據(jù)時(shí)默認(rèn)值問(wèn)題
* @return
*/
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
@Override
public void insertFill(MetaObject metaObject) {
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis()));
Object createTime = this.getFieldValByName("createTime", metaObject);
if(Objects.isNull(createTime)) {
this.setFieldValByName("createTime", new Date(System.currentTimeMillis()), metaObject);
}
this.setFieldValByName("createUser", "admin", metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis()));
this.setFieldValByName("updateTime", new Date(System.currentTimeMillis()), metaObject);
}
};
}
}