mybatisplus字段自动填充
1. 有些我们数据库的默认每张表都存在的字段 "deleted" ,"created" , "updated" 等等 , 由于我们每次新增或者编辑的时候都要去操作它 ,就很麻烦我们可以利用mybatisplus进行一些扩展
这就用到了我们的MetaObjectHandler 类,可以实现这个类来进行扩展来进行自动填充这些字段
@Component public class MpMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "deleted", Integer.class, 0); this.strictInsertFill(metaObject, "created", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "updated", LocalDateTime.class, LocalDateTime.now()); } @Override public void updateFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "updated", LocalDateTime.class, LocalDateTime.now()); } }
实现了上述的类之后呢
@Data @TableName("annex_info") public class AnnexInfo implements Serializable { private static final long serialVersionUID = 1L; /** * 自增ID */ @TableId(value = "id", type = IdType.ASSIGN_ID) @Excel(name = "自增ID") private Long id; /** * 删除 */ @Excel(name = "删除") @TableField(fill = FieldFill.INSERT) private Integer deleted; /** * 上传时间 */ @Excel(name = "上传时间") @TableField(fill = FieldFill.INSERT) private LocalDateTime created; /** * 更新时间 */ @Excel(name = "更新时间") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updated; }
通过注解 @TableField(fill = FieldFill.INSERT) 来指定更新还是新增
public enum FieldFill { /** * 默认不处理 */ DEFAULT, /** * 插入时填充字段 */ INSERT, /** * 更新时填充字段 */ UPDATE, /** * 插入和更新时填充字段 */ INSERT_UPDATE }