让我给您详细讲解"MyBatis-Plus 修改和添加自动填充时间方式"的完整攻略。
什么是自动填充时间?
MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,可以轻松地实现 MyBatis 中的常见操作,如分页。自动填充时间功能是 MP 的一项重要功能之一,它可以在往表中插入记录和修改记录时,自动填充时间字段,无需手动设置。
MP 自动填充时间实现方式
MP 自动填充时间的实现方式主要包括两个步骤:
- 添加自动填充当前时间的处理器;
- 在实体类中定义需要自动填充时间的字段并添加注解。
下面我们具体介绍这两个步骤。
添加自动填充当前时间的处理器
- 首先,定义一个实现了
MetaObjectHandler
接口的处理器类,这里以DefaultMetaObjectHandler
为例。
public class DefaultMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}
在这里,我们重写了 insertFill
和 updateFill
方法,分别用来在插入记录和更新记录时自动填充时间。strictInsertFill
和 strictUpdateFill
方法的参数分别为 1. MetaObject
对象,2. 字段名,3. 字段类型,4. 字段值。在这里,我们指定了 createTime
和 updateTime
字段名,LocalDateTime
类型,以及使用 LocalDateTime.now()
方法获取当前时间作为字段值。
- 然后,在应用启动时通过
MybatisPlusConfigurationCustomizer
将处理器添加到 MyBatis-Plus 的全局配置中。这里以 Spring Boot 为例,可以在启动配置类中添加如下代码:
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusConfigurationCustomizer mybatisPlusConfigurationCustomizer() {
return configuration -> configuration.setMetaObjectHandler(new DefaultMetaObjectHandler());
}
}
这里,我们定义了一个 MybatisPlusConfigurationCustomizer
Bean,并通过 setMetaObjectHandler
方法将处理器添加到 MyBatis-Plus 的全局配置中。
在实体类中定义需要自动填充时间的字段并添加注解
现在,我们已经定义了自动填充当前时间的处理器,接下来需要在实体类中定义需要自动填充时间的字段并添加注解。
以 User
实体类为例,假设我们需要在插入和更新记录时自动填充 createTime
和 updateTime
字段。
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
}
在这里,我们定义了 createTime
和 updateTime
字段,并在注解 @TableField
中添加了 fill
属性,其值分别为 FieldFill.INSERT
和 FieldFill.UPDATE
,表示插入和更新时需要自动填充这两个字段。
这样,在执行插入和更新操作时,MP 就会自动调用处理器中的 insertFill
和 updateFill
方法,将当前时间填充到相应字段中。
示例
下面,我们通过两个例子来演示 MP 自动填充时间的具体使用。假设我们有一个 User
实体类和一个 UserMapper
接口,用来操作 t_user
表。
示例一:插入记录
我们需要往 t_user
表中插入一条记录,假设记录信息如下:
字段 | 值 |
---|---|
name | 张三 |
age | 20 |
User user = new User();
user.setName("张三");
user.setAge(20);
userMapper.insert(user);
执行插入操作后,t_user
表中的记录信息如下:
id | name | age | createTime | updateTime |
---|---|---|---|---|
1 | 张三 | 20 | 2021-07-01 11:27:00 | 2021-07-01 11:27:00 |
可以看到,createTime
和 updateTime
字段已经自动填充了当前时间。
示例二:更新记录
我们需要更新 t_user
表中 id
为 1 的记录,假设需要更新记录信息如下:
字段 | 值 |
---|---|
name | 李四 |
age | 22 |
User user = new User();
user.setId(1L);
user.setName("李四");
user.setAge(22);
userMapper.updateById(user);
执行更新操作后,t_user
表中的记录信息如下:
id | name | age | createTime | updateTime |
---|---|---|---|---|
1 | 李四 | 22 | 2021-07-01 11:27:00 | 2021-07-02 10:47:00 |
可以看到,updateTime
字段已经自动更新为当前时间。
总结
在本篇攻略中,我们详细介绍了如何使用 MP 自动填充时间。具体包括添加自动填充当前时间的处理器和在实体类中定义需要自动填充时间的字段并添加注解。我们还通过两个示例演示了 MP 自动填充时间的具体使用方法。希望本篇攻略能够对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis-Plus 修改和添加自动填充时间方式 - Python技术站