mybatis----批量增加與批量刪除


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

批量增加

<insert id="batchSaveUser">
        insert into t_user (user_name,sex) values
        <!-- 動態SQL之foreach的用法 -->
        <!-- collection="users" 用於指定循環集合的名稱,如果接口中並未指定參數別名,那么默認就是list
         item="u" 用於指定每次循環后的對象的別名
         separator="," 用於指定每次循環后之間的分割符-->
        <foreach collection="users" item="u" separator=",">
            (#{u.userName},#{u.sex})
        </foreach>
    </insert>

 

批量刪除

<delete id="batchDeleteUser">
        delete from t_user where id in (
        <foreach collection="ids" item="id" separator=",">
            #{id}
        </foreach>
        )  

 </delete>

<!-- 第二種批量刪除的寫法 -->

<!-- open表示該語句以什么開始,close表示以什么結束 -->

<delete id="batchDeleteUser">
        delete from t_user where id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>

</delete>

 


免責聲明!

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



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