當傳入參數為list的時候foreach的使用
當參數為一個list的時候
方法層:
int deleteAll(List<String> list);
xml文件中的sql語句
<delete id="deleteAll" parameterType="list">
delete from classify
where id in
<foreach collection="list" index="index" item="item"
open="(" separator="," close=")">
#{item}
</foreach>
</delete>
當參數為多個list方法層
控制層:
執行層
xml文件
基本完成
下面是一些常識:
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item表示集合中每一個元素進行迭代時的別名,
index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,
open表示該語句以什么開始,
separator表示在每次進行迭代之間以什么符號作為分隔 符,
close表示以什么結束
collection主要有一下3種情況:
1. 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
2. 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
3. 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可
1.單參數List的類型:
上述collection的值為list,對應的Mapper是這樣的
public List dynamicForeachTest(List ids);
測試代碼:
2.單參數array數組的類型
1 <select id="dynamicForeach2Test" parameterType="java.util.ArrayList" resultType="Blog">
2 select * from t_blog where id in
3 <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
4 #{item}
5 </foreach>
6 </select>
上述collection為array,對應的Mapper代碼:
public List dynamicForeach2Test(int[] ids);
對應的測試代碼
3.自己把參數封裝成Map的類型
1 <select id="dynamicForeach3Test" parameterType="java.util.HashMap" resultType="Blog">
2 select * from t_blog where title like "%"#{title}"%" and id in
3 <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
4 #{item}
5 </foreach>
6 </select>
上述collection的值為ids,是傳入的參數Map的key,對應的Mapper代碼:
public List dynamicForeach3Test(Map params);
對應測試代碼
版權聲明:本文為CSDN博主「withawind」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/withawind/article/details/87252769