mybatis批量插入Oracle与mysql差异

mysql

<insert id="addHandSyncArea" parameterType="com.bn.acm.base.po.AreaManagePo">
		insert
		into
		sky_area_route(
			code,
			name,
			significance,
			area,
			vesting_area,
			child_area,
			remark,
			feature_type,
			area_feature,
			color,
			is_deleted,
		    area_scope
		)
		values
		<foreach collection="list" item="item" index="index" separator=",">
			(
				#{item.code,jdbcType=VARCHAR},
				#{item.name,jdbcType=VARCHAR},
				#{item.significance,jdbcType=VARCHAR},
				#{item.area,jdbcType=VARCHAR},
				#{item.vestingArea,jdbcType=VARCHAR},
				#{item.childArea,jdbcType=VARCHAR},
				#{item.remark,jdbcType=VARCHAR},
				#{item.featureType,jdbcType=VARCHAR},
				#{item.areaFeature,jdbcType=VARCHAR},
				#{item.color,jdbcType=VARCHAR},
				'0',
				#{item.areaScope,jdbcType=VARCHAR}
			)
		</foreach>
	</insert>

Oracle

区别:
1.SQL中没有VALUES;
2.标签中的(selece ..... from dual);
3.标签中的separator的属性为"UNION ALL",将查询合并结果集。

方法一(此方法插入的clob字段超高4000长度时会报错):

<insert id="addHandSyncArea" parameterType="com.bn.acm.base.po.AreaManagePo">
		insert
		into
		sky_area_route(
			code,
			name,
			significance,
			area,
			vesting_area,
			child_area,
			remark,
			feature_type,
			area_feature,
			color,
			is_deleted,
		    area_scope
		)
		<foreach collection="list" item="item" separator="UNION ALL">
		(
			select
				#{item.code,jdbcType=VARCHAR},
				#{item.name,jdbcType=VARCHAR},
				#{item.significance,jdbcType=VARCHAR},
				#{item.area,jdbcType=VARCHAR},
				#{item.vestingArea,jdbcType=VARCHAR},
				#{item.childArea,jdbcType=VARCHAR},
				#{item.remark,jdbcType=VARCHAR},
				#{item.featureType,jdbcType=VARCHAR},
				#{item.areaFeature,jdbcType=VARCHAR},
				#{item.color,jdbcType=VARCHAR},
				'0',
				#{item.areaScope,jdbcType=VARCHAR}
			from dual
		)
		</foreach>
	</insert>

方法二(解决方法一报错):

<insert id="addHandSyncArea" parameterType="com.bn.acm.base.po.AreaManagePo">
		begin
		<foreach collection="list" item="item" index="index" separator=";">
			insert
			into
			sky_area_route(
				code,
				name,
				significance,
				area,
				vesting_area,
				child_area,
				remark,
				feature_type,
				area_feature,
				color,
				is_deleted,
				area_scope
			)
			values(
				#{item.code,jdbcType=VARCHAR},
				#{item.name,jdbcType=VARCHAR},
				#{item.significance,jdbcType=VARCHAR},
				#{item.area,jdbcType=VARCHAR},
				#{item.vestingArea,jdbcType=VARCHAR},
				#{item.childArea,jdbcType=VARCHAR},
				#{item.remark,jdbcType=VARCHAR},
				#{item.featureType,jdbcType=VARCHAR},
				#{item.areaFeature,jdbcType=VARCHAR},
				#{item.color,jdbcType=VARCHAR},
				'0',
				#{item.areaScope,jdbcType=VARCHAR}
			)
		</foreach>
		;end;
	</insert>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值