mybatis裡oracle與MySQL的insert_update

來源:互聯網
上載者:User

標籤:

需求:gisdata表中插入資料,如果wxid資料存在就更新,不存在就插入

Mysql的mybatis配置

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  3     "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="com.test.wechat.dao.GisDataMapper"> 5     <sql id="userColumns"> 6         wxid,ip,port,login_username,login_status,wx_num,tel,qq,email,task_name,min_longitude,max_longitude,min_latitude,max_latitude,clent_id,country,province,city,town 7     </sql> 8  9     <insert id="insertGisData" parameterType="GisData" useGeneratedKeys="true">10         replace into gisdata (<include refid="userColumns"/>) values (#{wxid},#{ip},#{port},#{loginUsername},#{loginStatus},#{wxNum},#{tel},#{qq},#{email},#{taskName},#{minLongitude},#{maxLongitude},#{minLatitude},#{maxLatitude},#{clentId},#{country},#{province},#{city},#{town})11     </insert>12     <!-- <delete id="deleteGisData" parameterType="int">13         delete from gis_data14     </delete> -->15 </mapper>

oracle的mybatis配置

 1 <insert id="insertGisData" parameterType="GisData"  2  merge into gisdata gd 3  using dual on(gd.wxid=#{wxid}) 4  when matched then 5  update 6  set gd.ip = #{ip}, 7  gd.port=#{port}, 8  gd.wx_num=#{wx_num} 9  gd.town=#{town}10  when not matched then11  insert12  (13  wxid,ip,port,wx_num,town14  ) 15  values16  (17  #{wxid},#{ip}, #{port},#{wx_num},#{town}18  )19  </insert>

 

 備忘:MySQL 的 replace into:插入資料前,replace into會首先根據主鍵或唯一索引判斷是否存在相同的記錄,如果存在,則先刪除原來資料,然後再插入新資料;如果沒有相同的記錄,則直接插入。

oracle的merge into:與mysql中的replace into類似,在插入資料前,merge into也會根據主鍵判斷是否有相同的記錄,不同的是後面的操作,merge into對於存在的相同記錄可以不做任何操作,也可以進行修改操作,但是不能有其他動作;如果沒有相同記錄,可以不做任何操作,也可以做插入操作,同樣也 不能有其他動作。

 

但我實際驗證時發現兩者之間有一個區別(都是操作同一張表):

MySQL的replace into 1.更新已存在資料  2.刪除與新資料匹配不上的資料 3.插入新資料(與原表匹配不上的資料)

oracle的merge into 只能更新與追加

mybatis裡oracle與MySQL的insert_update

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.