mybatis-plus自动填充字段
1. 引入mybatis-plus 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2.配置字段
在表对应的实体类中需要自动填充的字段上面添加@TableField
注解:
public class Demo {
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
其中我们使用了注解中的 fill
属性(字段自动填充策略):
FieldFill.INSERT
:表示插入时填充字段;
FieldFill.INSERT_UPDATE
:表示插入和更新时填充字段;
具体更多属性值我们可以查看 FieldFill
的源码:
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入时填充字段
*/
INSERT,
/**
* 更新时填充字段
*/
UPDATE,
/**
* 插入和更新时填充字段
*/
INSERT_UPDATE
}
3.配置填充规则
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyBatisMetaObjectHandler implements MetaObjectHandler {
/**
* 自定义插入时填充规则
*/
@Override
public void insertFill(MetaObject metaObject) {
// 注意是类属性字段名称,不是表字段名称
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
/**
* 自定义更新时填充规则
*/
@Override
public void updateFill(MetaObject metaObject) {
// 注意是类属性字段名称,不是表字段名称
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
在这里,我们通过实现 MetaObjectHandler
接口类的 insertFill
方法和 updateFill
方法来实现自动填充功能:
insertFill
方法指定了在插入值时如何自动填充字段值,而 updateFill
方法则指定了在更新值时如何自动填充字段值;
通过调用 MetaObjectHandler
的 setFieldValByName
方法实现字段值的填充,第一个参数为类属性的字段名称,第二个参数为字段要填充的值。
配置好后,当 MybatisPlus 插入和更新数据库时就会字段为我们填充指定的字段值。也可以应用于动态设置新增或者删除修改的操作用户。