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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值