Java 利用MetaObjectHandler接口对公共字段赋默认值
1、概述
MetaObjectHandler接口是mybatisPlus为我们提供的的一个扩展接口,我们可以利用这个接口在我们插入或者更新数据的时候,为一些字段指定默认值。 使用场景:公共字段填充等,如updateTime、createTime、createUser、updateUser等公共字段多的填充。 基本使用: 1.实体的公共字段使用@TableField注解; 1)@TebleField(fill = FieldFill.INSERT):表示此字段只在插入/新增操作时更新数据 2)@TebleField(fill = FieldFill.INSERT_UPDATE):表示此字段在修改和新增操作时都更新数据; 3)@TebleField(fill = FieldFill.UPDATE):表示此字段只在修改操作时都更新数据;
2、自动填充处理类
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * 字段自动填充策略处理类 * */ @Component public class AutoFillMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class); this.strictInsertFill(metaObject, "createBy", ConstUtil::getCurrentUserId, String.class); this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); this.strictUpdateFill(metaObject, "updateBy", ConstUtil::getCurrentUserId, String.class); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); this.strictUpdateFill(metaObject, "updateBy", ConstUtil::getCurrentUserId, String.class); } }
3、类定义
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @TableField(value = "CREATE_BY", fill = FieldFill.INSERT) private String createBy; @TableField(value = "UPDATE_TIME", fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; @TableField(value = "UPDATE_BY", fill = FieldFill.INSERT_UPDATE) private String updateBy;
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号