MybatisPlus的自動填充功能使用!


有時我們希望在更新數據的時候,自動完成某些字段的值的填充,如創建一個實體的時候,自動生成創建時間,更新的時候自動改變更新時間等。

  • 在指定字段標注注解,生成器策略部分也可以配置。
    // 創建時間
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    // 更新時間
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
public enum FieldFill {
    /**
     * 默認不處理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新填充字段
     */
    INSERT_UPDATE
}
  • 實現元對象處理接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    // fieldName 指的是實體類的屬性名,而不是數據庫的字段名
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        this.strictInsertFill(
            metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(
            metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(
            // 起始版本 3.3.0(推薦)
            metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
        // 或者
        this.strictUpdateFill(
            // 起始版本 3.3.3(推薦)
            metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); 
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM