MyBatis-Plus 提供了一个便捷的自动填充功能,用于在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。以下是如何使用这一功能的详细说明。
原理概述
自动填充功能通过实现 com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
接口来实现。你需要创建一个类来实现这个接口,并在其中定义插入和更新时的填充逻辑。
使用步骤
1. 定义实体类
在实体类中,你需要使用 @TableField
注解来标记哪些字段需要自动填充,并指定填充的策略。
创建一个类来实现 MetaObjectHandler
接口,并重写 insertFill
和 updateFill
方法。
3. 配置自动填充处理器
确保你的 MyMetaObjectHandler
类被 Spring 管理,可以通过 @Component
或 @Bean
注解来实现。
注意事项
- 自动填充是直接给实体类的属性设置值。
- 如果属性没有值,入库时会是
null
。
MetaObjectHandler
提供的默认方法策略是:如果属性有值则不覆盖,如果填充值为 null
则不填充。
- 字段必须声明
@TableField
注解,并设置 fill
属性来选择填充策略。
- 填充处理器需要在 Spring Boot 中声明为
@Component
或 @Bean
。
- 使用
strictInsertFill
或 strictUpdateFill
方法可以根据注解 FieldFill.xxx
、字段名和字段类型来区分填充逻辑。
- 如果不需区分,可以使用
fillStrategy
方法。
- 在
update(T entity, Wrapper<T> updateWrapper)
时,entity
不能为空,否则自动填充失效。
- 在
update(Wrapper<T> updateWrapper)
时不会自动填充,需要手动赋值字段条件。
参数填充示例
无法填充示例
FieldFill 枚举
通过以上步骤,你可以轻松地在 MyBatis-Plus 中实现自动填充功能,提高开发效率。
© 2016-2024 Baomidou™. All Rights Reserved.
Power by Astro Starlight |
Sponsored by JetBrains
渝ICP备2021000141号-1 |
渝公网安备50011302222097