MetaObjectHandler
是 MyBatis-Plus 框架提供的一个接口,用于在执行数据库操作时自动填充实体类的字段值。它提供了一些默认方法,可以在插入和更新操作时自动填充指定字段的值,以简化开发过程并提高代码的可维护性。
先来看看这个MetaObjectHandler
接口,其中
- void insertFill(MetaObject metaObject);
- void updateFill(MetaObject metaObject);
定义实体类:
public class User {
@TableField(fill = FieldFill.INSERT)
private String createTime;
@TableField(fill = FieldFill.UPDATE)
private String updateTime;
// 其他字段...
}
insertFill
和 updateFill
方法是在执行数据库的插入或更新操作时被调用的
public class BussinessCenterMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 判断当前实体是否有 createTime 属性的 setter 方法
boolean createTime = metaObject.hasSetter("createTime");
if (createTime) {
// 判断 createTime 字段的值是否为 null
if (this.getFieldValByName("createTime", metaObject) == null) {
// 使用 strictInsertFill 方法为 createTime 字段填充默认值
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
}
}
}
@Override
public void updateFill(MetaObject metaObject) {
boolean updateUserId = metaObject.hasSetter("updateUserId");
if(updateUserId){
this.strictUpdateFill(metaObject,"updateUserId",Long.class,SecurityUtil.getUserId());
}
boolean updateTime = metaObject.hasSetter("updateTime");
if(updateTime){
this.strictUpdateFill(metaObject,"updateTime",Date.class,new Date());
}
}
}