Mybatisplus实现时间自动填充

BaseEntity

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class BaseEntity {

	@ApiModelProperty(value = "创建时间")
	@TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

	@ApiModelProperty(value = "更新时间")
	@TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

实现mybatisplus自动填充器

/**
 * @author l-jiahui
 */
@Component
@Slf4j
public class AutoCreateTime implements MetaObjectHandler {

    @ApiModelProperty("创建时间")
    final String CREATE_TIME = "createTime";

    @ApiModelProperty("更新时间")
    final String UPDATE_TIME = "updateTime";

    @Override
    public void insertFill(MetaObject metaObject) {
        //有创建时间字段时,才进行填充,否则不处理
        boolean hasCreateTimeField = metaObject.hasSetter(CREATE_TIME);
        if (hasCreateTimeField) {
            final LocalDateTime now = LocalDateTime.now();
            //新增时,插入创建时间(注意传入的字段名是属性中的变量名,不是数据库中的字段名)
            strictInsertFill(metaObject, CREATE_TIME, LocalDateTime.class, now);
            //更新时,更新时间(注意传入的字段名是属性中的变量名,不是数据库中的字段名)
            strictUpdateFill(metaObject, UPDATE_TIME, LocalDateTime.class, now);
        }
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        //存在更新时间字段时,再进行自动填充,否则不处理
        boolean hasUpdateTime = metaObject.hasSetter(UPDATE_TIME);
        //获取实体中,是否手动设置了值,如果设置了值,则不进行自动填充
        Object val = getFieldValByName(UPDATE_TIME, metaObject);
        if (val == null && hasUpdateTime) {
            //更新时,更新时间(注意传入的字段名是属性中的变量名,不是数据库中的字段名)
            strictUpdateFill(metaObject, UPDATE_TIME, LocalDateTime.class, LocalDateTime.now());
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值