mybatis批量操作中標籤的使用
阿新 • • 發佈:2019-02-05
MyBatis使用,在進行批量操作時可以通過<foreach>標籤,對傳入的集合引數進行遍歷。
一、foreach標籤使用:
1.批量更新
dao層設定傳入引數,與遍歷的引數名保持一致: Integer
batchUpdate(@Param("stuList")
List<Student> stuList);
<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="stuList" item="stu" separator=" " >update student set name = #{stu.name}, score = #{stu.score} where id = #{stu.id,jdbcType=VARCHAR} ; </foreach> </update>
2.批量查詢,通常使用foreach構建in語句,實現批量查詢(見http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html)
<selectid="selectPostIn"resultType="domain.blog.Post"> SELECT * FROM POST P WHERE ID in <foreachitem="item"index="index"collection="list"open="("separator=","close=")"> #{item} </foreach></select>
二、<foreach>標籤元素詳解
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item表示集合中每一個元素進行迭代時的別名,
index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,
open表示該語句以什麼開始,
separator表示在每次進行迭代之間以什麼符號作為分隔 符,
close表示以什麼結束。
三、collection的選擇
在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況 下,該屬性的值是不一樣的,主要有一下3種情況:
1. 如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list
2. 如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array
3. 如果傳入的引數是多個的時候,我們就需要把它們封裝成一個Map了,當然單引數也可以封裝成map