[mybatis]list的foreach的使用


當傳入參數為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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM