在mybatis的mapper配置文件中,可以利用<foreach>標籤實現sql條件的循環,可完成類似批量的sql
mybatis接受的參數分爲:(1)基本類型(2)對象(3)List(4)數組(5)Map
無論傳哪種參數給mybatis,他都會將參數放在一個Map中:
如果傳入基本類型:變量名作爲key,變量值作爲value 此時生成的map只有一個元素。
如果傳入對象: 對象的屬性名作爲key,屬性值作爲value,
如果傳入List: "list"作爲key,這個List是value (這類參數可以迭代,利用<foreach>標籤實現循環)
如果傳入數組: "array"作爲key,數組作爲value(同上)
如果傳入Map: 鍵值不變。
<foreach>標籤的用法:
六個參數:
collection:要循環的集合
index:循環索引(不知道啥用。。)
item:集合中的一個元素(item和collection,按foreach循環理解)
open:以什麼開始
close:以什麼結束
separator:循環內容之間以什麼分隔
例如:
<update id="pubS" parameterType="Map"> UPDATE BMC_SUBPLATE SET PLSTATUS = '02' WHERE <foreach collection="ids" item="plid" open="" close="" separator="OR"> PLID = #{plid} </foreach> </update>
collection的值其實就是mybatis把參數轉化成Map以後,這個Map的key,但是這個key對應的value必須是一個集合, 可以是數組,也可以是List
生成的動態sql:
Executing: UPDATE BMC_SUBPLATE SET PLSTATUS = '02' WHERE PLID = ? OR PLID = ?
Parameters: 20121116144947537692(String), 20121116141301414855(String)