mybatis 使用merge into

前一篇博客,oracle的merge into语法 : oracle merge into语法

mybatis 使用merge into,跟一般的update写法相同:

<update id="mergeinfo">
        merge into user_type a
        using ( select #{name} as name, #{type} as type from dual ) b
        on (a.type = b.type)
        when not matched then
        insert  (type,name) values(#{type},#{name})
        when matched then
        update set name = #{name} where type = #{type}
    </update>

 

传入字段 name、type,使用 “select #{name} as name, #{type} as type from dual”,构建一个子查询建别名 “b”,

目标表“a” 的type字段,与子查询表“b”的type字段比较:

  如果不匹配:

    执行 :“insert (type,name) values(#{type},#{name})”

  如果匹配:

    执行:“update set name = #{name} where type = #{type}”

主要on 后面的括弧不能省

 

测试代码:

  

@Test
    public void testmergeinfo(){
        map.put("type", "t");
        map.put("name", "venn");
        int a = sqlSession.update(“mergeinfo”,map); 
     sqlSession.commit();
     System.out.println(a); }

 

输出插入或更新的记录条数。

 

转载于:https://www.cnblogs.com/Springmoon-venn/p/8519592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值