自动填充字段
MyBatis-Plus 提供了一个便捷的自动填充功能,用于在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。以下是如何使用这一功能的详细说明。
原理概述
自动填充功能通过实现 com.baomidou.mybatisplus.core.handlers.MetaObjectHandler 接口来实现。你需要创建一个类来实现这个接口,并在其中定义插入和更新时的填充逻辑。
使用步骤
- 定义实体类
在实体类中,你需要使用 @TableField 注解来标记哪些字段需要自动填充,并指定填充的策略。
1 | public class User { |
- 实现 MetaObjectHandler
创建一个类来实现 MetaObjectHandler 接口,并重写 insertFill 和 updateFill 方法。
1 | // java example |
1 | // kotlin example |
- 配置自动填充处理器
确保你的 MyMetaObjectHandler 类被 Spring 管理,可以通过 @Component 或 @Bean 注解来实现。
INFO
注意事项
自动填充是直接给实体类的属性设置值。
如果属性没有值,入库时会是 null。
MetaObjectHandler 提供的默认方法策略是:如果属性有值则不覆盖,如果填充值为 null 则不填充。
字段必须声明 @TableField 注解,并设置 fill 属性来选择填充策略。
填充处理器需要在 Spring Boot 中声明为 @Component 或 @Bean。
使用 strictInsertFill 或 strictUpdateFill 方法可以根据注解 FieldFill.xxx、字段名和字段类型来区分填充逻辑。
如果不需区分,可以使用 fillStrategy 方法。
在 update(T entity, Wrapper
在 update(Wrapper
参数填充示例
1 | // 插入填充示例 |
无法填充示例
1 | // 方法参数名不满足填充条件,需要将 user 换成 et 才能正确填充 |
FieldFill 枚举
1 | public enum FieldFill { |
通过以上步骤,你可以轻松地在 MyBatis-Plus 中实现自动填充功能,提高开发效率。
说些什么吧!