当前使用版本(必填,否则不予处理)

3.4.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

重现步骤(如果有就写完整)

MyBatis-Plus 请教:自动填充功能如何覆盖实体对象自带的值

mp默认策略:使用自动填充功能时,属性有值则不覆盖。

场景:对数据库查询出来的一条数据进行更新(全字段查询,包括updateTime),第一次更新,updateTime没有值,可以自动填充。后面继续对这条数据进行查询并更新,updateTime已经有值了,mp默认策略不会覆盖之前的值。

请教:自动填充时如何控制是否覆盖实体对象原有的值。

伪代码如下:


// 自动填充实现类
@Component
public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

// 实体类
public class CustomEntity {
        @TableField(fill = FieldFill.INSERT)
        private Date createdTime;

        @TableField(fill = FieldFill.UPDATE)
        private Date updateTime;
}

// 更新语句
IService.updateById(entity);
或其它更新语句 IService.update......

报错信息

Comment From: miemieYaho

点开看一下调用链就知道了

Comment From: yangsenlin01

懂了,谢谢