mayBatis中xml的foreach筆記

2021-10-12 03:17:09 字數 1373 閱讀 8361

近日專案用到了這一塊,然後拜讀了一下,總結出了這個筆記

mybatis之foreach用法

動態生成sql語句,這個時候用到mybatis的foreach來遍歷。

foreach的元素屬性主要有:

item:集合中原色迭代時的別名,該引數偉必選;

index:在list和陣列中,index是元素的序號,在map中,index是元素的key,該引數可選;

collection:要做foreach的物件,作為入參時,list物件預設用「list"代替作為鍵,陣列物件有」array"代替作為鍵,map物件沒有預設的鍵,當然在作為入參時可以使用@param(「keyname」)來設定鍵,設定keyname後,list,array將會失效。除了入參這種情況外,還有一種作為引數物件的某個欄位的時候。舉個例子:如果user有屬性list ids,入參是user物件,那麼collection = 「ids.id」。如果user有屬性ids ids;其中ids是個物件,ids有個屬性list id;入參是user物件,那麼collection = 「ids.id

open:foreach**的開始符號,一般和(colse=」)「合用。常用在in(),values()時,該引數可選;

separator:元素之間的分隔符,例如在in()的時候,separato=」 ," 會自動在元素中間用「 ,」隔開,避免手動輸入逗號導致sql錯誤,如in(1,2)這樣。該引數可選

close:foreach**的關閉符號,一般是)和open="("合用,常用在in(),balues()時。該引數可選。

注重:collection屬性比較容易出錯,該屬性必須是指定的,但是不同的情況下的屬性值是不一樣的。主要有一下三種 情況:

1,如果傳入的是單引數且引數型別是乙個list時,其屬性為list;

2,如果傳入的是單引數且引數型別是array陣列時,其屬性值為array;

3,如果傳入的引數是多個,就需要封裝成乙個map了,當然單引數也可以封裝成map,實際上你在傳入引數的時候,mybatis也會把它封裝成乙個map,其中map的key就是引數名,所以這個時候collection的屬性值就是傳入的list、array物件在自己封裝的map裡面的key。

最後一條詳解:

你可以將乙個list例項或者陣列作為引數物件傳給mybatis,當這麼做的時候,mybatis會自動將他封裝成map並以名稱為鍵, list例項會將list作為鍵,陣列例項的鍵為key。

所以,不管是多引數還是單引數的list,array型別,都可以封裝為map進行傳遞。如果傳遞的是乙個list,則mybatis會封裝為乙個list為key,list值為object的map,如果是array,則封裝成乙個array為key,array的值為object的map,如果自己封裝呢,則colloection裡放的是自己封裝的map裡的key值。

iOS中NSPredicate常用的format

1 比較運算子 number 100 2 範圍運算子 in between number between address in 3 字串本身 self name contain cd ang 包含某個字串 name beginswith c sh 以某個字串開頭 name endswith d an...

MayBatis與Spring的整合

第一步 匯入相關的 jar包 spring 和mybatis mybatis spring jar spring jdbc jar spring tx jar 第二步 spring的配置檔案 a 配置資料來源 b 配置 sqlsession 工廠c 配置 sqlsessiontemplate 第三步...

Java中的foreach迴圈 增強的for迴圈

今天瀏覽網頁的時候無意中看到了另外一種迴圈,foreach迴圈,它是在jdk1.5引入的一種增強型for迴圈,它的引入簡化了集合和陣列的遍歷,而且效能和 簡潔性優於普通的for迴圈和iterator,缺點是丟失了索引資訊,當需要訪問集合的下標時,不應該使用for each迴圈。基本語法 for ty...