mybatis 對 oracle 的批量操作,
阿新 • • 發佈:2018-12-14
1:返回插入新資料的主鍵(主鍵序列自增)
獲取方式:map.get("ID");<insert id="saveLanguageType" parameterType="map" flushCache="false"> <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="ID"> SELECT SQ_SYS.Nextval AS ID from DUAL </selectKey> insert into sys_language_type ( ID, UPDATE_TIME ) values ( #{ID}, #{UPDATE_TIME} ) </insert>
2:批量插入 傳入引數list
注:需配置 useGeneratedKeys="false",才用自定義主鍵。雖預設為false,但是還是需要配置。
解釋:將資料存放在虛表中讀出來對應的序列值也就是自增長的ID,在進行插入語句。<insert id="saveLanguagekeyValue" parameterType="java.util.List" useGeneratedKeys="false" flushCache="false"> insert into table ( ID, UPDATE_TIME ) SELECT SQ_SYS.NEXTVAL AS ID, A.* FROM ( <foreach collection="list" item="item" index="index" separator="UNION ALL"> SELECT #{item.UPDATE_TIME} FROM dual </foreach> ) A </insert>
3:批量更新 傳入引數list
注:與MySQL的區別是在語句前後加 begin ;end;
<update id="Updates" parameterType="java.util.List" flushCache="false">
begin
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update table
<set>
UPDATE_TIME =${item.UPDATE_TIME}
</set>
where ID =${item.ID}
</foreach>
;end;
</update>
4:批量刪除 與 MySQL的一樣。