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
}

 

posted @ 2022-07-13 15:19  少侠砍人不用刀  阅读(408)  评论(0编辑  收藏  举报