MybatisPlus固定字段自定义填充

MybatisPlus固定字段自定义填充 在开发过程中,数据库字段有一些表中需要填入重复的字段例如:insertTime、updateTime、insertUser、updateUser、等等… 每个表对应写add和update服务时需要将这些固定字段重复填入,操作繁琐且代码冗余,MybatisPlus很好的解决了这个问题。话不多说,上代码: 配置类:

@Component
@Slf4j
public class MyMetaObjecthandler implements MetaObjectHandler {
          
   
    /**
     * 插入操作,自动填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
          
   
        log.info("公共字段自动填充[insert]...");
        log.info(metaObject.toString());

        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());
        metaObject.setValue("createUser",BaseContext.getCurrentId());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
    }

    /**
     * 更新操作,自动填充
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
          
   
        log.info("公共字段自动填充[update]...");
        log.info(metaObject.toString());

        long id = Thread.currentThread().getId();
        log.info("线程id为:{}",id);

        metaObject.setValue("updateTime",LocalDateTime.now());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
    }
}

写好配置类后,需要在实体类字段上加上注解: 分别对应insert、update, 实体类中无注解则不会填充

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


//更新时间
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;


//创建人
@TableField(fill = FieldFill.INSERT)
private Long createUser;


//修改人
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;

ok,至此功能实现,大家去实施效果吧

经验分享 程序员 微信小程序 职场和发展