参数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>