用途:
可以同时从1个或者多个源表对目标表进行更新、插入、删除数据,经常用于操作大量的数据,即对于大批量的数据更新、插入时效率极高。
MERGE INTO Table_name a
USING (SELECT count(ID) c FROM Table_name where id=#{id}) b
ON (b.c>0)
WHEN MATCHED THEN
UPDATE SET
<if test="field != null">
#{field,jdbcType=NUMERIC},
</if>
where id=#{ID}
WHEN NOT MATCHED THEN
insert
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="field != null">
field,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="field != null">
#{field,jdbcType=NUMERIC},
</if>
</trim>
这段代码是对单表的数据进行新增或者修改的操作
首先是看条件表中的id是否和传过来的数据id是否有大于零,大于零表示数据库中有这一条数据
则执行WHEN MATCHED THEN中的代码进行根据id修改字段
若不大于零表示表中未找到对应的字段,那么就会执行NOT MATCHED THEN后的插入语句