mybatis 的批量merge操作

参考代码如下:

注意,其中using后的结果集必须用小括号括起来,on后面那个也不能省。

后续操作使用别名处理结果集。

<update id="mergeBank" parameterType="java.util.List">
		merge into T_MY_BANK a
		using
		(
		<foreach collection="list" index="index" item="item" open=""
				 close="" separator="union all">
			SELECT
			sys_guid() as id,
			#{item.bankCode,jdbcType=VARCHAR} as bankCode,
			#{item.bankName,jdbcType=VARCHAR} as bankName,
			#{item.bankName,jdbcType=VARCHAR} as subBankName,
			#{item.bankId,jdbcType=VARCHAR} as bankId,
			'1' as  isOverseas
			FROM dual
		</foreach>
		) b
		on (
		a.BANK_ID = b.bankId
		)
		when
		matched then
		UPDATE SET
		a.BANK_CODE = b.bankCode,
		a.BANK_NAME=b.bankName,
		a.SUB_BANK_NAME = b.subBankName,
		a.UPDATE_DT=sysdate
		when
		not matched then
		INSERT(
		a.ID,
		a.BANK_CODE,
		a.BANK_NAME,
		a.SUB_BANK_NAME,
		a.BANK_ID,
		a.CREATE_DT,
		a.UPDATE_DT
		) VALUES(
		b.id,
		b.bankCode,
		b.bankName,
		b.subBankName,
		b.bankId,
		sysdate,
		sysdate
		)
	</update>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值