1.先直接贴代码,这个代码是测试有效的。
<insert id="addOrUpdate" parameterType="java.util.List">
MERGE INTO HOUS a
USING(
<foreach collection="list" item="item" index="index" separator="union" open="" close="">
select count(*) c ,#{item.TASK_NO,jdbcType=VARCHAR} TASK_NO,#{item.MAN,jdbcType=VARCHAR} MAN from ${schema.configPlat}.HOUS_INVEST_TASK where TASK_NO=#{item.TASK_NO}
</foreach>
)b
on (b.c >0)
WHEN NOT MATCHED THEN
INSERT (TASK_NO,SERVICE_MAN,CUST_NAME) values(b.TASK_NO,b.SERVICE_MAN,b.CUST_NAME)
</insert>
2. 之前baidu 上查的都是 on(b.TASK_NO=a.TASK_NO),这种情况插入数据的时候会抱错。
3 .b指的就是 list里面传递的字段,这个里面的逻辑是查询不到不做任何操作,也可以增加一条更新语句。