Merge操作:
作用:判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表,如果不满足,则将B表数据插入A表
简单来说,就是 数据库中有原有记录则更新,没有的话则新插一条
Merge语法在不同的数据库中可能略有差别,但基本的语法结构都是:
MERGE INTO [表名] A
USING [数据] B
ON([判断相等的条件A] and [判断相等的条件B]...)
WHEN MATCHED THEN <!--若匹配上,则执行更新语句 -->
[更新语句]
WHEN NOT MATCHED THEN <!--若没有匹配上,则新插入该条数据 -->
[插入数据]
Oracle+mybatis的merge操作和mysql不太一样,主要是因为Oracle中INSERT语句 不支持以下写法的批量插入
insert into table
(id,name)
values
(1,'张三'),
(2,'李四')
这样的写法,批量insert需要写成 Union的方式,如下
insert into table(id, name)
select '24', '张三' from dual
union select '李四', 'jack' from dual
union select '王五', 'jack' from dual
因此,在Oracle中,标准的Merge+mybait