MybatisPlus-自動填充字段(時間字段/普通字段)

  • 實體類
@Data  // lombok依賴
public class User{
	 @TableField( fill = FieldFill.INSERT)
	private Integer isDelete;
	 @TableField(fill = FieldFill.INSERT_UPDATE)
	private Date createTime;
}
  • 實現元對象處理器接口:

com.baomidou.mybatisplus.core.handlers.MetaObjectHandlermybatis

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推薦使用)
        this.fillStrategy(metaObject, "isDelete", 1); // 也能夠使用(3.3.0 該方法有bug請升級到以後的版本如`3.3.1.8-SNAPSHOT`)
        /* 上面選其一使用,下面的已過期(注意 strictInsertFill 有多個方法,詳細查看源碼) */
        //this.setFieldValByName("operator", "Jerry", metaObject);
        //this.setInsertFieldValByName("operator", "Jerry", metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推薦使用)
        this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也能夠使用(3.3.0 該方法有bug請升級到以後的版本如`3.3.1.8-SNAPSHOT`)
        /* 上面選其一使用,下面的已過期(注意 strictUpdateFill 有多個方法,詳細查看源碼) */
        //this.setFieldValByName("operator", "Tom", metaObject);
        //this.setUpdateFieldValByName("operator", "Tom", metaObject);
    }
}
  • TableField
public enum FieldFill {
    /**
     * 默認不處理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新填充字段
     */
    INSERT_UPDATE
}
相關文章
相關標籤/搜索