mybatis-plus实现接口MetaObjectHandler实现自动赋值

521 阅读1分钟

今天在写代码发现公共的实体类属性,(创建时间,创建人,更新时间,更新人),在插入更新的时候自动赋值,网上查询以及查找源代码发现构建框架的同事写了一个自动赋值的实现类。

@Slf4j
@Component
public class MetaObjectAutoFillConfiguration implements MetaObjectHandler
{

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createBy", String.class, SecurityUtils.getLoginUser().getUser().getUserName());
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateBy", String.class, SecurityUtils.getLoginUser().getUser().getUserName());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateBy", String.class, SecurityUtils.getLoginUser().getUser().getUserName());
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

配置该类后,在相应的实体类需要生成的公共字段添加@TableField 的fill属性,就可以实现mybatis-plus在插入更新的时候自动填充值

/**
 * 创建者
 */
@TableField(value = "create_by", fill = FieldFill.INSERT)
private String createBy;

/**
 * 创建时间
 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;

/**
 * 更新者
 */
@TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
private String updateBy;

/**
 * 更新时间
 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;