MyBatis的foreach語句詳解

2021-09-30 16:21:46 字數 2235 閱讀 1553

foreach的主要用在構建

in條件中,它可以在

sql語句中進行迭代乙個集合。

foreach

元素的屬性主要有

item

,index

,collection

,open

,separator

,close

。item

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

index

指 定乙個名字,用於表示在迭代過程中,每次迭代到的位置,

open

表示該語句以什麼開始,

separator

表示在每次進行迭代之間以什麼符號作為分隔 符,

close

表示以什麼結束,在使用

foreach

的時候最關鍵的也是最容易出錯的就是

collection

屬性,該屬性是必須指定的,但是在不同情況 下,該屬性的值是不一樣的,主要有一下

3種情況:

1. 如果傳入的是單引數且引數型別是乙個

list

的時候,

collection

屬性值為

list

2. 如果傳入的是單引數且引數型別是乙個

array

陣列的時候,

collection

的屬性值為

array

3. 如果傳入的引數是多個的時候,我們就需要把它們封裝成乙個

map了,當然單引數也可以封裝成

map,實際上如果你在傳入引數的時候,在

breast

裡面也是會把它封裝成乙個

map的,

map的

key就是引數名,所以這個時候

collection

屬性值就是傳入的

list

或array

物件在自己封裝的

map裡面的

key

下面分別來看看上述三種情況的示例**:

1.單引數

list

的型別:

select * from t_blog where id in#

上述collection的值為

list

,對應的

是這樣的

public listdynamicforeachtest(listids);

測試**:

@test

public void dynamicforeachtest()

上述collection為

array

,對應的

**:

public listdynamicforeach2test(int ids);

對應的測試**:

@test

public void dynamicforeach2test() ;

for (blog blog : blogs)

system.out.println(blog);

session.close();

3.自己把引數封裝成

map的型別

select * from t_blog where title like "%"#"%" and id in#

上述collection的值為

ids,是傳入的引數

map的

key,對應的

**:

public listdynamicforeach3test(mapparams);

對應測試**:

@test

public void dynamicforeach3test() {

sqlsession session = util.getsqlsessionfactory().opensession();

final listids = new arraylist();

ids.add(1);

ids.add(2);

ids.add(3);

ids.add(6);

ids.add(7);

ids.add(9);

mapparams = new hashmap();

params.put("ids", ids);

params.put("title", "中國

");

for (blog blog : blogs)

system.out.println(blog);

session.close();

MyBatis中的foreach迴圈

mybatis動態sql中foreach標籤的使用 foreach標籤主要用於構建in條件,他可以在sql中對集合進行迭代。如下 delete from user where id in 我們假如說引數為 int ids 那麼列印之後的sql如下 delete form user where id ...

mybatis的foreach標籤用法

foreach元素的屬性主要有 item,index,collection,open,separator,close。item表示集合中每乙個元素進行迭代時的別名,index指 定乙個名字,用於表示在迭代過程中,每次迭代到的位置,open表示該語句以什麼開始,separator表示在每次進行迭代之間...

Mybatis中的foreach用法

在mysql中我們要實現in的篩選查詢,我們一般直接通過 select from user where id in 2 3 這樣直接通過in操作就可以進行篩選,但是在mybatis中卻無法直接使用in,這就需要使用foreach方法來實現mysql中的in篩選。樣式如下 select from us...