MybatisPlus自动填充字段详解

版权申诉
0 下载量 103 浏览量 更新于2024-08-07 收藏 62KB DOCX 举报
"MybatisPlus常用字段默认值自动填充文档主要介绍了如何在使用MybatisPlus时,自动填充字段如创建时间和更新时间,并提供了自定义填充默认数值的方法。" 在MybatisPlus框架中,为了实现字段的自动填充,比如在插入数据时自动设置`createTime`和`updateTime`为当前时间,以及在更新数据时更新`updateTime`,我们可以遵循以下步骤: 1. 首先,确保在数据库表中存在对应的日期类型字段,例如`create_time`和`update_time`。 2. 在实体类中,我们需要使用`@TableField`注解来标识哪些字段需要进行自动填充。`@TableField(fill=FieldFill.INSERT)`用于在插入时填充,`@TableField(fill=FieldFill.INSERT_UPDATE)`则会在插入和更新时都填充。例如: ```java @Data public class User { private Long id; private String name; private Integer age; private String email; @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; } ``` 3. `FieldFill`枚举提供了不同的填充策略,默认是`DEFAULT`表示不做处理,`INSERT`表示插入时填充,`UPDATE`表示更新时填充,`INSERT_UPDATE`表示插入和更新都会填充。 4. 如果想要自定义填充默认值,可以创建一个继承自`MetaObjectHandler`的类,然后重写`insertFill`和`updateFill`方法。在这些方法中,你可以通过`MetaObject`对象获取字段并设置默认值。例如: ```java @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); } } ``` 在SpringBoot应用中,记得将`MyMetaObjectHandler`通过`@Component`或`@Bean`注解声明,以便自动注入到MybatisPlus的配置中。 5. 在`strictInsertFill`和`strictUpdateFill`方法的第二个参数中,我们传入的是实体类的属性名(如"createTime"),而不是数据库的字段名。 通过以上步骤,MybatisPlus将在执行插入和更新操作时自动处理指定字段的默认值,避免了手动设置这些值的繁琐工作。这提高了代码的可读性和维护性,同时确保了数据的一致性和准确性。