91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Mybatis-Plus將字段設置為null沒起作用怎么解決

發布時間:2023-04-25 17:09:32 來源:億速云 閱讀:332 作者:iii 欄目:開發技術

這篇文章主要介紹了Mybatis-Plus將字段設置為null沒起作用怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Mybatis-Plus將字段設置為null沒起作用怎么解決文章都會有所收獲,下面我們一起來看看吧。

    項目場景:

    最近在做一個需求的時候需要把數據庫中的某個字段設置為空

    問題描述:

    在代碼中通過set方法對一個字段設置成null,發現并沒有起作用

    原因分析:

    經過查詢是因為Mybatis-Plus默認的更新策略設置的問題,Mybatis-Plus中FieldStrategy有三種策略:

    • IGNORED:忽略。不管有沒有有設置屬性,所有的字段都會設置到insert語句中,如果沒設置值會更新為null;

    • NOT_NULL:非 NULL,默認策略。也就是忽略null的字段,不忽略"";

    • NOT_EMPTY:非空。為null,為空串的忽略,就是如果設置值為null,“”,不會插入數據庫;

    默認的是NOT_NULL,也就是忽略null字段,所以更新不成功。

    解決方案:

    需對 FieldStrategy 策略進行調整,有如下三種方式:

    方式一:調整全局的驗證策略,如下:

    mybatis-plus:
      mapper-locations: classpath:/mapper/**/*.xml
      typeAliasesPackage: com.test.application.test.admin.entity
      global-config:
        #主鍵類型  0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";
        id-type: 0
        #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
        field-strategy: 0
        #駝峰下劃線轉換
        db-column-underline: true
        #刷新mapper 調試神器
        refresh-mapper: true
        #數據庫大寫下劃線轉換
        #capital-mode: true
      configuration:
        map-underscore-to-camel-case: true
        cache-enabled: true
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    方式二:【推薦】調整字段驗證注解

    Mybatis-Plus 版本3.1.2及以上,根據具體情況,在需要更新的字段中調整驗證注解,如驗證非空:

    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
    private String name;
    
    或者單個的例子:
    
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String username;

    方式三:使用 UpdateWrapper (3.x)

    使用以下方法來進行更新或插入操作:

    //updateAllColumnById(entity) // 全部字段更新: 3.0已經移除
    mapper.update(
      new User().setName("mp").setAge(3),
      Wrappers.<User>lambdaUpdate()
              .set(User::getEmail, null) //把email設置成null
              .eq(User::getId, 2)
    );
    
    // 也可以參考下面這種寫法
    mapper.update(
       null,
       Wrappers.<User>lambdaUpdate()
          .set(User::getAge, 3)
          .set(User::getName, "mp")
          .set(User::getEmail, null) // 把email設置成null
          .eq(User::getId, 2)
    );

    關于“Mybatis-Plus將字段設置為null沒起作用怎么解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Mybatis-Plus將字段設置為null沒起作用怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    家居| 海淀区| 蓝田县| 达尔| 易门县| 漳平市| 海门市| 湖口县| 富蕴县| 盐池县| 措勤县| 肃南| 德庆县| 陆河县| 杭锦后旗| 新疆| 元阳县| 濮阳市| 南皮县| 金川县| 怀远县| 清新县| 陇西县| 乌拉特前旗| 古浪县| 葫芦岛市| 荆门市| 镇巴县| 固原市| 沾化县| 汾阳市| 海伦市| 湖南省| 咸宁市| 柳州市| 资兴市| 通海县| 汪清县| 雅安市| 武邑县| 正定县|