更新和插入数据时,有一些公共字段,如插入时间和更新时间,每个表都需要set会很麻烦,可以采用mybatis plus提供的自动填充方法。
步骤如下:
1、实现接口MetaObjectHandler
实现MetaObjectHandler接口的insertFill()和updateFill()
public class MyMetaObjectHandler implements MetaObjectHandler{
/**
* 新增时填充
*/
@Override
public void insertFill(MetaObject metaObject) {
metaObject.setValue("inserttime", new Date());
metaObject.setValue("updatetime", new Date());
}
/**
* 更新时填充
*/
@Override
public void updateFill(MetaObject metaObject) {
setFieldValByName("updatetime", new Date(), metaObject);
}
}
注意:metaObject.setValue("inserttime", new Date()); setFieldValByName("updatetime", new Date(), metaObject);里字段名称(加粗部分)要与pojo里字段名称一致。
2、在配置文件中配置bean
<bean id="myMetaObjectHandler" class="com.component.MyMetaObjectHandler"/>
<bean id="GlobalConfiguration" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="metaObjectHandler" ref="myMetaObjectHandler"></property>
</bean>
<!-- sqlSessionFactory -->
<bean id="Mybatis_sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="xxxx" />
<property name="typeAliasesPackage" value="com.dao.po"/>
<property name="globalConfig" ref="NG_IBOSS_DS_01_GlobalConfiguration"></property>
</bean>
3、在pojo类的对应字段上加注解
fill=FieldFill.INSERT:表示插入时填充该字段
fill=FieldFill.INSERT_UPDATE:表示更新和插入时填充该字段
/**
* 插入时间
*/
@TableField(value="INSERTTIME",fill=FieldFill.INSERT)
private Date inserttime;
/**
* 更新时间
*/
@TableField(value="UPDATETIME",fill=FieldFill.INSERT_UPDATE)
private Date updatetime;
完成上述步骤,在插入和更新字段时,插入时间和更新时间就会自动更新,不需要再在Service或者Controller里set值了。根据实际情况也可以对其他的一些公共字段进行处理。
注:该方法只对mybatis plus自己封装的Service方法有效。