Mybatis-Plus 提供了强大的自动填充功能,可以自动填充实体类中的某些字段,简化开发流程,提高代码效率。
1. 核心概念
-
MetaObjectHandler: Mybatis-Plus 自动填充的核心接口,需要实现该接口并覆盖两个方法:
-
insertFill(MetaObject metaObject)
: 在插入操作时自动填充字段。 -
updateFill(MetaObject metaObject)
: 在更新操作时自动填充字段。
-
-
FieldFill: 用于定义字段的填充策略,包含以下枚举值:
-
INSERT
: 仅在插入操作时填充。 -
UPDATE
: 仅在更新操作时填充。 -
INSERT_UPDATE
: 在插入和更新操作时都填充。
-
-
@TableField: 用于标注实体类中的字段,并指定填充策略。
2. 使用步骤
-
创建自定义MetaObjectHandler
import ; import ; import ; @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { // 设置创建时间 ("createTime", (), metaObject); // 设置创建人 ("createUser", "admin", metaObject); } @Override public void updateFill(MetaObject metaObject) { // 设置更新时间 ("updateTime", (), metaObject); // 设置更新人 ("updateUser", "admin", metaObject); } }
-
配置自动填充策略
import ; import ; import ; @Configuration public class MybatisPlusConfig { @Bean public GlobalConfig globalConfig() { GlobalConfig globalConfig = new GlobalConfig(); // 设置自动填充策略 (new MyMetaObjectHandler()); return globalConfig; } }
-
在实体类中使用@TableField注解
import ; import ; import ; @Data public class User { private Long id; private String name; @TableField(fill = ) private Long createTime; @TableField(fill = ) private String createUser; @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateTime; @TableField(fill = FieldFill.INSERT_UPDATE) private String updateUser; }
3. 使用示例
// 插入操作
User user = new User();
("张三");
// 自动填充createTime、createUser、updateTime、updateUser
(user);
// 更新操作
("李四");
// 自动填充updateTime、updateUser
(user);
4. 总结
Mybatis-Plus 自动填充功能可以有效简化开发流程,提高代码效率。开发者只需定义好自动填充策略和字段,Mybatis-Plus 就会自动完成填充操作,无需手动编写代码。
5. 注意事项
- 自动填充功能需要在配置中启用,并设置MetaObjectHandler。
- 实体类中的字段需要使用@TableField注解标注,并指定填充策略。
- 填充的值可以是常量,也可以是方法返回值。
- 可以根据实际需求自定义填充逻辑。