attention:
批量新增时如果是两条完全重复数据,该sql仅新增一条。
若仅主键重复,则报错。
oracle:
merge into table t using
(
select ? col1, ? col2 ... from dual
union select ? col1, ? col2 ... from dual
......
)temp
on
(t.col1 = temp.col1 and ....) --一般为主键,修改条件
when matched then
update set t.col1 = temp.col1, ....
when not matched then
insert (col1,....)
values(temp.col1,....);
mabatis:
<update ....>
merge into table t using
(
<foreach collection="mapper对应参数名" item="item" separator="union">
select
#{item.col1,jdbcType=DATE} col1,
#{item.col2,jdbcType=DATE} col2,
...
from dual
</foreach>
on
....(与上一致)
注意:item.参数 一定要与对应的实体类名相同
报错 parameter 找不到