oracle-mybatis批量存入更新数据(MERGE)

参数user_info_list为map中的一个list。

oracle存入多条数据:

<update id="megerUsers" parameterType="map">
/*要存入的表,别名为A1*/
MERGE INTO T_WX_USER A1
	/*遍历集合获得数据列表,别名为A2*/
	USING
	(
		<foreach close="" collection="user_info_list" index="index" item="item" open="" separator="union">
				select
					#{item.id} id,
					#{item.openid} openid,
					#{item.nickname} nickname,
					#{ACCT_OPEN_ID} ACCT_OPEN_ID,
					#{item.headimgurl} headimgurl,
					#{item.tagid_list} tagid_list,
					#{item.sex} sex,
					#{item.city} city,
					#{item.country} country,
					#{item.province} province,
					#{item.subscribe_time} subscribe_time,
					#{item.bindFlag,jdbcType=VARCHAR} bindFlag,
					#{item.subscribe} subscribe
				from dual
		</foreach>
	) A2
	/*主键*/
	ON
	(
		A1.OPEN_ID = A2.openid
	)
	/*主键匹配,说明原表已有该数据,更新*/
	WHEN MATCHED THEN
		UPDATE SET
			A1.FOCUS_FLAG = A2.subscribe
			,A1.NICK_NAME = A2.nickname
			,A1.HEAD_IMG_URL = A2.headimgurl
			,A1.SEX = A2.sex
			,A1.CITY = A2.city
			,A1.COUNTRY = A2.country
			,A1.PROVINCE = A2.province
			,A1.TAGID_LIST = A2.tagid_list
			,A1.ACCT_OPEN_ID = A2.ACCT_OPEN_ID
	/*主键不能匹配,说明原表无该数据,存入*/
	WHEN NOT MATCHED THEN
		INSERT
			(
				A1.USER_ID,
				A1.OPEN_ID,
				A1.NICK_NAME,
				A1.ACCT_OPEN_ID,
				A1.HEAD_IMG_URL,
				A1.TAGID_LIST,
				A1.SEX,
				A1.CITY,
				A1.COUNTRY,
				A1.PROVINCE,
				A1.FOCUS_TIME,
				A1.FOCUS_FLAG
			) VALUES (
				A2.id,
				A2.openid,
				A2.nickname,
				A2.ACCT_OPEN_ID,
				A2.headimgurl,
				A2.tagid_list,
				A2.sex,
				A2.city,
				A2.country,
				A2.province,
				A2.subscribe_time,
				A2.subscribe
			)
</update>

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值