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: 要填充的值

浙公网安备 33010602011771号