mybatis 多個foreach 同時使用

一、應用場景

       1、多個表的數據一起刪除的時候,有的時候不會建立外鍵,但主表的關聯 表很多的時候,可以直接利用mybatis 進行多表刪除。

二、注意事項

 mybatis 中多個foreach 循環,第一次循環的collection  看到的值是一個(數組、list、map、對象,由collection的配置主導)。

第二次foreach 是直接copy第一個foreach的對象值,這個時候會一直累加對象。

解決方案

數組爲例

dao層去掉@Param註解

void batchDeleteSysTransferRegist(String rowData[]);

mybatis

<delete id="batchDeleteSysTransferRegist" parameterType="string">
        delete from sys_transfer_regist_item  where transfer_regist_id in
        <foreach item="rowData" collection="array" open="(" separator="," close=")">
            #{rowData}
        </foreach>
        ;delete from sys_transfer_regist_piece  where transfer_regist_id in
        <foreach item="rowData1" collection="array" open="(" separator="," close=")">
            #{rowData1}
        </foreach>
......
    </delete>

切記;隔開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章