前一篇博客,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); }
輸出插入或更新的記錄條數。