最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatisPlus?FieldStrategy?策略作用小結(jié)

 更新時(shí)間:2025年12月10日 09:47:02   作者:愛(ài)吃土豆的馬鈴薯?????????  
MyBatis-Plus的FieldStrategy枚舉用于控制實(shí)體字段在插入、更新和查詢條件中的空值處理策略,下面就來(lái)詳細(xì)的介紹一下mybatisPlus?FieldStrategy?策略,感興趣的可以了解一下

MyBatis-Plus 的 FieldStrategy 枚舉用于控制實(shí)體字段在 插入(Insert)更新(Update)查詢條件(Where) 中的空值處理策略。理解這些策略對(duì)避免數(shù)據(jù)異常非常重要,以下是詳細(xì)解釋:

一、各策略的作用

1.IGNORED

  • 作用忽略空值判斷,無(wú)論字段值是否為 null、空字符串("") 或空集合,都會(huì)參與 SQL 操作。
  • 場(chǎng)景:強(qiáng)制將字段更新為 null(解決 saveOrUpdate 無(wú)法更新 null 的問(wèn)題)。

2.NOT_NULL

  • 作用僅忽略 null,非 null 的空字符串或空集合仍會(huì)參與 SQL 操作。
  • 場(chǎng)景:允許字段為空字符串,但不允許 null(如數(shù)據(jù)庫(kù)字段允許 '' 但不允許 NULL)。

3.NOT_EMPTY

  • 作用忽略 null、空字符串("") 和空集合。
  • 場(chǎng)景:字符串或集合類型字段必須有實(shí)際值(如用戶名、列表數(shù)據(jù))。

4.DEFAULT

  • 作用全局默認(rèn)策略,通常等價(jià)于 NOT_NULL(取決于 MyBatis-Plus 版本)。
  • 場(chǎng)景:使用全局配置的默認(rèn)行為。

5.NEVER

  • 作用永遠(yuǎn)不參與 SQL 操作,無(wú)論值是什么。
  • 場(chǎng)景:字段僅用于業(yè)務(wù)邏輯,不與數(shù)據(jù)庫(kù)交互(如臨時(shí)計(jì)算字段)。

二、不同方法(insert/update/where)的策略差異

1.insertStrategy(插入時(shí))

  • 影響范圍save()、saveBatch() 等插入方法。
  • 示例
    @TableField(insertStrategy = FieldStrategy.NOT_NULL)
    private String username; // 插入時(shí)忽略 null 值
    

2.updateStrategy(更新時(shí))

  • 影響范圍updateById()、saveOrUpdate()update(entity, wrapper) 等更新方法。
  • 示例
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String email; // 更新時(shí)允許將 email 設(shè)置為 null
    

3.whereStrategy(查詢條件時(shí))

  • 影響范圍Wrapper 條件構(gòu)造器中的實(shí)體參數(shù)。
  • 示例
    @TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
    private String phone; // 查詢條件中忽略空字符串和 null
    

三、策略對(duì)比表

策略插入(Insert)更新(Update)查詢條件(Where)
IGNORED字段值無(wú)論如何都插入字段值無(wú)論如何都更新字段值無(wú)論如何都作為條件
NOT_NULL忽略 null,插入其他值忽略 null,更新其他值忽略 null,其他值作為條件
NOT_EMPTY忽略 null、""、空集合忽略 null、""、空集合忽略 null、""、空集合
DEFAULT按全局配置(通常為 NOT_NULL)按全局配置(通常為 NOT_NULL)按全局配置(通常為 NOT_NULL)
NEVER字段不參與插入字段不參與更新字段不作為條件

四、常見(jiàn)應(yīng)用場(chǎng)景

1. 允許更新字段為null

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String remark; // 允許將備注更新為 null

2. 插入時(shí)自動(dòng)填充默認(rèn)值

@TableField(insertStrategy = FieldStrategy.NOT_NULL)
private Integer status = 1; // 插入時(shí)若未設(shè)置值,則使用默認(rèn)值 1

3. 避免空字符串作為查詢條件

@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
private String keyword; // 避免空字符串作為查詢條件

五、全局配置 vs 字段注解

  • 全局配置(優(yōu)先級(jí)低):

    mybatis-plus:
      global-config:
        db-config:
          insert-strategy: NOT_NULL
          update-strategy: NOT_NULL
          where-strategy: NOT_EMPTY
    
  • 字段注解(優(yōu)先級(jí)高):

    @TableField(insertStrategy = FieldStrategy.IGNORED, 
                updateStrategy = FieldStrategy.NOT_NULL)
    private String nickname;
    

六、總結(jié)

  • IGNORED:強(qiáng)制讓 null 參與 SQL 操作,解決 saveOrUpdate 無(wú)法更新 null 的問(wèn)題。
  • NOT_NULL:最常用,避免 null 導(dǎo)致數(shù)據(jù)庫(kù)字段被意外覆蓋。
  • NOT_EMPTY:適合字符串和集合類型,確保有實(shí)際數(shù)據(jù)。
  • 更新 null 字段:優(yōu)先使用 FieldStrategy.IGNORED 注解,而非全局配置。

合理配置這些策略可以避免 null 值導(dǎo)致的意外數(shù)據(jù)問(wèn)題,提高代碼健壯性。

到此這篇關(guān)于mybatisPlus FieldStrategy 策略作用的文章就介紹到這了,更多相關(guān)mybatisPlus FieldStrategy 策略內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MyBatis通用Mapper實(shí)現(xiàn)原理

    淺談MyBatis通用Mapper實(shí)現(xiàn)原理

    這篇文章主要介紹了淺談MyBatis通用Mapper實(shí)現(xiàn)原理,本文會(huì)先介紹通用 Mapper 的簡(jiǎn)單原理,然后使用最簡(jiǎn)單的代碼來(lái)實(shí)現(xiàn)這個(gè)過(guò)程。感興趣的小伙伴們可以參考一下
    2018-10-10
  • springboot整合mybatis-plus 實(shí)現(xiàn)分頁(yè)查詢功能

    springboot整合mybatis-plus 實(shí)現(xiàn)分頁(yè)查詢功能

    這篇文章主要介紹了springboot整合mybatis-plus 實(shí)現(xiàn)分頁(yè)查詢功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot項(xiàng)目集成Smart-Doc的實(shí)戰(zhàn)指南

    SpringBoot項(xiàng)目集成Smart-Doc的實(shí)戰(zhàn)指南

    Smart-Doc是一款強(qiáng)大的基于Java的API文檔生成工具,它通過(guò)對(duì)接口源代碼進(jìn)行分析來(lái)生成全面而準(zhǔn)確的文檔,完全不需要對(duì)代碼進(jìn)行任何注入,下面我們看看如何在SpringBoot項(xiàng)目中集成Smart-Doc吧
    2025-10-10
  • Spring @Conditional注解從源碼層講解

    Spring @Conditional注解從源碼層講解

    @Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean,這篇文章主要介紹了Spring @Conditional注解示例詳細(xì)講解,需要的朋友可以參考下
    2023-01-01
  • Java基于UDP協(xié)議的聊天室功能

    Java基于UDP協(xié)議的聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java基于UDP協(xié)議的聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java詳細(xì)解析==和equals的區(qū)別

    Java詳細(xì)解析==和equals的區(qū)別

    這篇文章主要介紹了Java中==和equals()的區(qū)別,,==可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中,equals()是方法,只能用于引用數(shù)據(jù)類型,需要的朋友可以參考下
    2022-04-04
  • mybatis中的緩存機(jī)制

    mybatis中的緩存機(jī)制

    這篇文章主要介紹了mybatis中的緩存機(jī)制用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • springboot整合knife4j全過(guò)程

    springboot整合knife4j全過(guò)程

    這篇文章主要介紹了springboot整合knife4j全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot返回Json對(duì)象報(bào)錯(cuò)(返回對(duì)象為空{(diào)})

    SpringBoot返回Json對(duì)象報(bào)錯(cuò)(返回對(duì)象為空{(diào)})

    本文主要介紹介紹了SpringBoot返回Json對(duì)象報(bào)錯(cuò)(返回對(duì)象為空{(diào)}),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java Future 接口使用方法詳解

    java Future 接口使用方法詳解

    這篇文章主要介紹了java Future 接口使用方法詳解,F(xiàn)uture接口是Java線程Future模式的實(shí)現(xiàn),可以來(lái)進(jìn)行異步計(jì)算的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

自贡市| 怀宁县| 铁岭市| 淮北市| 三门县| 麟游县| 闸北区| 博罗县| 宁武县| 罗源县| 太和县| 新绛县| 东乌| 荆州市| 大同县| 遂昌县| 宣化县| 射阳县| 大庆市| 日照市| 仙游县| 日土县| 黑龙江省| 贵定县| 云龙县| 徐闻县| 平江县| 金溪县| 宝鸡市| 穆棱市| 田阳县| 沈阳市| 共和县| 灵宝市| 嘉义市| 怀集县| 台北县| 城步| 大丰市| 错那县| 寿光市|