Oracle Merge into使用小节(一)

本文介绍如何在MyBatis中使用MergeInto命令来更新或插入数据。通过示例展示了如何根据匹配条件更新现有记录,或者当记录不存在时插入新记录。提供了具体的XML映射文件示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Merge into 命令在Mybatis中如何使用

Merge into同一张表

模板

merge into 目标表 a

using 源表 b

on(a.条件字段1=b.条件字段1……)  

when matched then update set a.更新字段=b.字段

when  not macthed then insert into a(字段1,字段2……)values(值1,值2……)

源表b中查出的结果表示本次结果可以更改的结果集数量
on(条件)中的结果是匹配原则

实现

merge into Table a
USING (select count(1) as cnt from Table
where ID = #{id, jdbcType=TIMESTAMP}
and CHANNEL_ID = #{channelId, jdbcType=INTEGER}
) b
on (
b.cnt>0
and a.ID= #{id, jdbcType=TIMESTAMP}
and a.CHANNEL_ID = #{channelId, jdbcType=INTEGER}
)
when MATCHED then
update set a.COUNT = a.COUNT + 1
when not MATCHED then
insert (
<if test="id != null">
    a.ID,
</if>
<if test="channelId != null">
    a.CHANNEL_ID,
</if>
<if test="count != null">
    a.COUNT
</if>
)
values(
<if test="id != null">
    #{id,jdbcType=VARCHAR},
</if>
<if test="channelId != null">
    #{channelId,jdbcType=INTEGER},
</if>
<if test="count != null">
    #{count,jdbcType=INTEGER},
</if>

)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值