引言
我们在进行数据库更新/插入操作时,字段中如果有更新时间每次插入都需要手动设置字段,这就很麻烦。而Mybatis Plus提供了自动填充字段的设置。能大大简化我们的工作。
1. Mybatis全局设置
Mybatis Plus提供了MetaObjectHandler类,我们只需要继承它并添加到全局设置即可。
<bean id="globalConfig"
class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<!--DB config -->
<property name="dbConfig">
<bean id="dbConfig"
class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
<property name="logicDeleteValue" value="true" />
<property name="logicNotDeleteValue" value="false" />
</bean>
</property>
<!-- 在这里添加object hander-->
<property name="metaObjectHandler">
<bean id="metaObjectHandler" class="xx.xx.xxx.dao.common.CustomMetaObjectHandler"/>
</property>
</bean>
继承后,自己实现insertFill跟updateFill方法,分别对应插入跟更新SQL执行时的实现。
@Component
public class CustomMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
}
@Override
public void updateFill(MetaObject metaObject) {
// 使用now()填充更新updatedDate字段
this.setFieldValByName("updatedDate", LocalDateTime.now(), metaObject);
}
}
2. 字段添加注解
相应字段也要添加TableField注解,fill设置为FieldFill.UPDATE,不然以上的设置也是无效的。
...
/**
* 更新时间字段
*/
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updatedDate;
...