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...