mybatis 使用merge into - weixin_41899778的博客 - CSDN博客

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); }

复制代码

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


Original url: Access
Created at: 2019-08-27 21:33:33
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论