1.循環添加
接口處:

分別是 void 無返回類型 ;有的話是(resultType)返回類型,參數類型(parameterType) list ,
如:


在mapper文件中分別對應ID,參數類型和返回類型。
循環處理,如下:
<insert id="insertPack" parameterType="java.util.List"> insert into t_ev_bu_pack ( PACK_CODE, BIN, PACK_PROD_TIME, CREATED_DATE, CREATED_BY, BATTERY_CLASS, SUPPLIER_NAME, TERMINAL_USER ) values <foreach collection="list" item="item" index="index" open="" close="" separator=","> ( #{item.PACK_CODE}, #{item.BIN}, #{item.PACK_PROD_TIME}, now(), #{item.CREATED_BY}, #{item.BATTERY_CLASS}, #{item.SUPPLIER_NAME}, #{item.TERMINAL_USER} ) </foreach> </insert>
由於沒有返回類型,只有方法ID和參數。
循環更新:

<update id="updatePack" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update t_ev_bu_pack
<trim prefix="SET" suffixOverrides=",">
<!-- BIN = #{BIN}, -->
<if test="item.TERMINAL_USER != null and item.TERMINAL_USER != ''">
TERMINAL_USER = #{item.TERMINAL_USER},
</if>
<if test="item.SUPPLIER_NAME != null and item.SUPPLIER_NAME != ''">
SUPPLIER_NAME = #{item.SUPPLIER_NAME},
</if>
<if test="item.PACK_PROD_TIME != null and item.PACK_PROD_TIME != ''">
PACK_PROD_TIME = #{item.PACK_PROD_TIME},
</if>
<if test="item.BATTERY_CLASS != null and item.BATTERY_CLASS != ''">
BATTERY_CLASS = #{item.BATTERY_CLASS},
</if>
LAST_UPDATED_TIME = now(),
LAST_UPDATED_BY = #{item.LAST_UPDATED_BY}
</trim>
where PACK_CODE = #{item.PACK_CODE}
</foreach>
</update>
貌似有點區別,insert只需要循環取值就行了,update則更復雜點因為SET 后面又‘,’號分隔,這個update 是循環所有數據,每條數據都有一個ID(即根據主鍵ID修改所以foreach在最外層),而insert只需要循環要插入的值即可(只需要循環傳入的數據即可);
