MyBatis 動態SQL續上乙個

2021-08-28 05:15:04 字數 1265 閱讀 6646

foreach的基本用法和屬性:foreach主要用在構建in條件中,它可以在sql與句中迭代乙個組合乙個集合。 他的主要屬性有關資料:

item:表示集合中每乙個元素進行迭代時的別名。

index:指定乙個名稱,用於表示在迭代過程中,每次迭代到的位置(此處省略,未指定)。

collection:最關鍵並最容易出錯的屬性,需格外注意,該屬性必須指定,不同情況下,該屬性的值是不一樣的,主要有三種情況:

1.若引數為單引數且引數型別是乙個list的時候,collection的屬性值為list。

2.若引數為單引數且引數型別是乙個陣列的時候,collection的屬性值為array(此處傳 入引數integer roleids為陣列型別,此處collection的屬性設為「array」)。

3.若引數為多引數,就需要把他們封裝為乙個map進行處理。

separator:表示在每次迭代以什麼符號作為分隔符(既然是in條件語句,所以必然是以「,」作為分隔符)。

close:表示該語句以什麼結束(既然是in條件語句,所以必然是以「)」結束)。

open:表示該語句以什麼開始(既然是in條件語句,所以必然是以「(」開始)。

1.首先,在介面中使用@param注釋,顯式指定集合引數類的別名(列表和陣列有預設的別名list和array),如圖:

在對應的對映檔案對應的map檔案key進行迭代,如圖:

測試類應該編寫為,如圖:

mybatis在sql對映檔案中可以靈活運用,只能的動態sql實現sql對映。

if+set:完成更新操作。

if+where:完成多條件查詢。

if+trim:完成多條件查詢(代替where)或者更新操作(代替set)。

choose(when , otherwise):完成條件查詢(多條件下,選擇其一)。

froeach:完成複雜查詢,主要用於in條件查詢中,迭代集合。其中最關鍵的部分就是 collection屬性,根            據不同的入參型別,該屬性值亦不同:

(1): 若入參物件為乙個list例項,collection屬性值為list。

(2): 若入參物件為乙個陣列,collection屬性值為array。

(3): 若入參物件為多個,就需要把他們封裝為乙個map進行處理。

mybatis 動態sql詳解

內容 轉到原網頁insert into t blog title,content,owner values select from t blog where id update t blog set title content owner where id select from t blog se...

mybatis入門 動態sql

mybatis核心就是對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。現有需求如下 需要查詢使用者,輸入的是使用者類,如果使用者的性別類不為空,則將性別作為查詢條件之一,如果使用者的姓名不為空,則將使用者姓名作為查詢條件之一。如果使用者兩個屬性都為空,則查詢所有使用者。將上...

MyBatis動態sql查詢

什麼是動態sql mybatis核心 對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。需求public class userpo if test userpo.id null and id if if where select id findusercount parame...