1. 程式人生 > >mybatis 對 oracle 的批量操作,

mybatis 對 oracle 的批量操作,

1:返回插入新資料的主鍵(主鍵序列自增)

	<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>
獲取方式:map.get("ID");

2:批量插入  傳入引數list

注:需配置 useGeneratedKeys="false",才用自定義主鍵。雖預設為false,但是還是需要配置。

	<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>
解釋:將資料存放在虛表中讀出來對應的序列值也就是自增長的ID,在進行插入語句。

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的一樣。