「MyBatis」官方文檔閱讀筆記(四)

2022年10月24日18:23:06 科技 1157

MyBatis動態SQL

前言

demo的項目地址:https://gitee.com/shuashua-world/shuashua-blog/tree/master/demo/mybatis-simple-demo

MyBatis動態SQL的元素種類:兩個條件判斷、一個控制前綴後綴值、一個用於遍歷。

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

if 標籤

if標籤用於條件判斷。使用動態 SQL 最常見情景是根據條件包含 where 子句的一部分。比如:

「MyBatis」官方文檔閱讀筆記(四) - 天天要聞

只使用if標籤的一個潛在問題就是下面這種情況:

「MyBatis」官方文檔閱讀筆記(四) - 天天要聞

choose (when, otherwise)標籤

與if標籤類似,都用於條件判斷。有時候,我們不想使用所有的條件,而只是想從多個條件中選擇一個使用。針對這種情況,MyBatis 提供了 choose 元素,它有點像 Java 中的 switch 語句。

「MyBatis」官方文檔閱讀筆記(四) - 天天要聞

trim (where, set) 標籤

where和set標籤都可以認為是trim標籤的一個子集,他們能提供的功能,trim都能提供。

where標籤

where 元素只會在子元素返回任何內容的情況下才插入 「WHERE」 子句。而且,若子句的開頭為 「AND」 或 「OR」,where 元素也會將它們去除。

where 元素等價的自定義 trim 元素為:

<trim prefix="WHERE" prefixOverrides="AND |OR ">
  ...
</trim>

where標籤的使用demo:

「MyBatis」官方文檔閱讀筆記(四) - 天天要聞

set標籤

set 元素可以用於動態包含需要更新的列,忽略其它不更新的列。。set 元素會動態地在行首插入 SET 關鍵字,並會刪掉額外的逗號(這些逗號是在使用條件語句給列賦值時引入的)。

和 set元素等價的自定義 trim 元素為:

<trim prefix="SET" suffixOverrides=",">
  ...
</trim>

set標籤的使用demo:

「MyBatis」官方文檔閱讀筆記(四) - 天天要聞

trim標籤

trim標籤可以用於前後綴的處理上。

一個完整的trim標籤:<trim prefix="" prefixOverrides="" suffix="" suffixOverrides=""></trim>

trim標籤的四個屬性:

  • prefix:在子元素返回任何內容的情況下插入前綴。
  • suffix:在子元素返回任何內容的情況下插入後綴。
  • prefixOverrides:移除所有 prefixOverrides 屬性中指定的內容。prefixOverrides 屬性會忽略通過管道符分隔的文本序列,即可以通過管道符|分隔多個內容。
  • suffixOverrides: 與prefixOverrides類似。

foreach

常見使用場景是對集合進行遍歷(尤其是在構建 IN 條件語句的時候)。

foreach 元素的功能非常強大,它允許你指定一個集合,聲明可以在元素體內使用的集合項(item)和索引(index)變數。它也允許你指定開頭與結尾的字元串以及集合項迭代之間的分隔符。這個元素也不會錯誤地添加多餘的分隔符。

它可以將任何可迭代對象(如 List、Set 等)、Map 對象或者數組對象作為集合參數傳遞給 foreach。當使用可迭代對象或者數組時,index 是當前迭代的序號,item 的值是本次迭代獲取到的元素。當使用 Map 對象(或者 Map.Entry 對象的集合)時,index 是鍵,item 是值。

「MyBatis」官方文檔閱讀筆記(四) - 天天要聞

科技分類資訊推薦

不卷價格拼供給,拼多多的「反直覺」生意經 - 天天要聞

不卷價格拼供給,拼多多的「反直覺」生意經

定焦One(dingjiaoone)原創作者 | 金玙璠編輯 | 魏佳最近有個現象很值得研究,一些商家喊著「生意難做」、「沒人花錢」——實體店老闆抱怨客流下滑;電商平台運營感嘆轉化率走低……可另一邊,年輕人卻在悶聲花錢——對漫威大片興趣寥寥
PCB行業的下一個風口?自動化如何重塑多層板生產 - 天天要聞

PCB行業的下一個風口?自動化如何重塑多層板生產

在電子信息高速發展的今天,PCB(印製電路板)行業也在經歷著一場深刻的轉型升級。尤其是在多層板生產領域,自動化正以前所未有的速度改變著傳統製造格局。越來越多的PCB企業開始思考:自動化是否只是「錦上添花」,還是已經成為「必由之路」?
電動車已上牌,車主戴了頭盔,為什麼上路卻被罰款?已有多人中招 - 天天要聞

電動車已上牌,車主戴了頭盔,為什麼上路卻被罰款?已有多人中招

隨著電動車成為城市短途出行的重要工具,各地交管部門對車輛合規性及騎行安全的監管力度持續加強。然而,不少車主因對法規細節的誤解或疏忽,誤以為「有牌即合法」、「戴盔即安全」,電動車在上路的時候,卻被交警查處並罰款,已經有多人中招,為什麼會這樣呢?一起來了解一下。
科技創新與網路文明同頻共振 - 天天要聞

科技創新與網路文明同頻共振

本報記者 吳 焰 徐 靖《人民日報》(2025年06月16日 第 10 版)第三屆中國(安徽)科技創新成果轉化交易會上,磐石科技生產的機器人正在彈鋼琴。何曉珺攝2025年中國網路文明大會現場。侯莉莉攝合肥城市風光。皖 宣攝網路空間是億萬民眾
腦機介面讓失語者重新說話 甚至能唱歌 - 天天要聞

腦機介面讓失語者重新說話 甚至能唱歌

快科技6月16日消息,美國加州大學戴維斯分校團隊研發出研究性腦機介面,可助因神經系統疾病失語者「發聲」,成果登《自然》雜誌。據了解,該技術能在人試圖說話時,將大腦活動即時轉化為語音,打造「數字聲帶」。目前,此技術已在漸凍症患者身上測試成功,其借植入式腦機介面與家人實時對話,甚至能控制語調、唱簡單旋律。...
馬斯克一條推文,造車新勢力幾年白卷了,Model Y自己「回家」了 - 天天要聞

馬斯克一條推文,造車新勢力幾年白卷了,Model Y自己「回家」了

在過去幾年時間裡,在全球範圍內,駕駛輔助一直都在持續迭代,尤其是最近一兩年時間裡,更是達到了白熱化的程度,尤其是特斯拉主導的全視覺模式和國內廠商們主導的激光雷達方案,可以說在孰強孰弱的問題上,口水仗打了不少。也是因為特斯拉的最強版本FSD一直進不了國內,很多國