mybatisplus 实现接口MetaObjectHandler自动填充字段值
作者:qq_36608622
MetaObjectHandler是MyBatis-Plus提供的一个接口,用于处理元对象(MetaObject)级别的操作,主要用于自动填充字段,比如在插入或更新数据时自动填充创建时间、修改时间等字段。通过实现MetaObjectHandler接口,你可以自定义字段的填充逻辑。
下面是如何实现MetaObjectHandler接口来自动填充字段的示例:
创建一个实现MetaObjectHandler的类:
import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @Component public class AutoFillMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } }
在这个例子中,insertFill方法会在插入数据前被调用,updateFill方法会在更新数据前被调用。strictInsertFill和strictUpdateFill方法用于填充指定的字段,如果字段已经存在值,则不会覆盖。
在实体类中声明需要自动填充的字段:
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; @TableName("user") public class User { @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; // 省略其他字段和getter/setter... }
在这里,@TableField注解的fill属性指定了字段的填充策略,FieldFill.INSERT表示仅在插入时填充,FieldFill.INSERT_UPDATE表示在插入和更新时都填充。
配置MetaObjectHandler:
在Spring Boot项目中,由于我们使用了@Component注解,Spring会自动扫描并注册这个类。如果你使用的是非Spring Boot的项目,需要手动配置Bean。
通过上述步骤,MyBatis-Plus会在执行插入或更新操作时,自动填充createTime和updateTime字段,无需在业务代码中显式设置这些字段的值。
到此这篇关于mybatisplus 实现接口MetaObjectHandler自动填充字段值的文章就介绍到这了,更多相关mybatisplus 自动填充字段值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!