溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用mybatisplus修改某字段為null怎么解決

發(fā)布時間:2023-02-22 16:25:28 來源:億速云 閱讀:201 作者:iii 欄目:開發(fā)技術

本文小編為大家詳細介紹“使用mybatisplus修改某字段為null怎么解決”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“使用mybatisplus修改某字段為null怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    mybatis-plus想要修改某字段為null

    問題場景

    使用mybatis + mybatisPlus進行修改某字段,想要將其設為null, 但執(zhí)行時沒有成功。

    原因

    mybatis-plus會將所有為空的字段在修改時進行過濾,不進行設為空的修改操作。

    解決辦法

    在相關字段上加上注解

    @TableField(strategy = FieldStrategy.IGNORED)

    例:

    @TableField(strategy = FieldStrategy.IGNORED)
    private Long classId;

    mybatis-plus更新字段為null不生效

    1.異常說明

    mapper.updateById()時,set為null未生效,其他字段更新

    periodRecordOriginal.setSettleTime(null);
    periodRecordOriginal.setActualSettleTime(null);
    periodRecordOriginal.setSettleStatus(0);
    int i = periodRecordMapper.updateById(periodRecordOriginal);

    2.原理

    MyBatis-Plus對字段的驗證策略導致的,MyBatis-Plus默認進?了不是全量更新的策略,默認忽略為null 的字段的

    3.解決辦法

    1)修改MyBatis-Plus 全局默認策略

    缺點:這樣做會對所有的字段都忽略判斷,如果一些字段不想要修改,但是傳值的時候沒有傳遞過來,就會被更新為null

    mybatis-plus:
      global-config:
          #字段策略 0:"忽略判斷",1:"非 NULL 判斷",2:"非空判斷"
        field-strategy: 0

    2)修改實體類注解,改變字段的忽略判斷

    缺點:需要注意數據庫字段是否設置為 非null ,如果為非null 也更新不成功

    @TableField( updateStrategy = FieldStrategy.IGNORED)
        private Date settleTime;

    讀到這里,這篇“使用mybatisplus修改某字段為null怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI