java总结-MetaObjectHandler

简介

MetaObjectHandler 是 MyBatis-Plus 提供的一个自动填充接口,用于在插入或更新操作时自动为某些字段设置值,避免重复代码。

 

策略

  • FieldFill.INSERT,仅在插入时填充
  • FieldFill.UPDATE,仅在更新时填充
  • FieldFill.INSERT_UPDATE,插入和更新都填充
  • FieldFill.DEFAULT,默认不填充

用法示例

@Data
@TableName("user")
public class User {
    
    @TableId(type = IdType.AUTO)
    private Long id;
    
    private String name;
    
    // 插入时自动填充创建时间
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    
    // 插入和更新时都自动填充更新时间
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

 

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    
    @Override
    public void insertFill(MetaObject metaObject) {
        // 插入时自动设置 createTime 和 updateTime
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
    }
    
    @Override
    public void updateFill(MetaObject metaObject) {
        // 更新时自动设置 updateTime
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

strictInsertFill 方法参数说明

this.strictInsertFill(metaObject, "fieldName", FieldType.class, value);

metaObject: MyBatis 的元对象,包含待填充的实体对象信息

"fieldName": 要填充的字段名(驼峰命名),必须与实体类中被注解标注的字段名完全一致(使用驼峰命名)。如果找到匹配的名称,就填充值;否则跳过

FieldType.class: 字段的类型

value: 要填充的值

posted @ 2026-04-02 09:57  星光闪闪  阅读(0)  评论(0)    收藏  举报