簡體   English   中英

MyBatis執行獲取操作,並根據返回值在Xxxmapper.xml中進行更新/插入嗎?

[英]MyBatis do a fetch and based on return value do an update/insert inside the Xxxmapper.xml?

有沒有一種方法可以在Mybatis插入SQL配置內嵌入select from tableselect from table該配置會檢查記錄是否存在->在同一表上運行更新
否則只插入數據。 我知道可以通過編程方式完成,但是需要一種方法在mapper.xml中完成

數據庫:Oracle 11g,mybatis 3.1.x

任何建議都是有幫助的

謝謝

使用UPSERT語句,大多數數據庫都支持UPSERT語句。 返回值將是更新或插入的記錄數。 盡管您尚未提供要對其執行更新或插入操作的數據庫。

UPDATE

Oracle 11g確實支持upsert

MERGE INTO KP_TBL USING DUAL ON (MY_KEY= #{myKey}) 
        WHEN MATCHED THEN 
                UPDATE SET OTHER_PARAM = #{myOtherParam},
                           SEC_PARAM = #{sec_param}
        WHEN NOT MATCHED THEN
                INSERT (MY_KEY, OTHER_PARAM,SEC_PARAM)  VALUES(#{myKey},#{myOtherParam},#{sec_param)

可以使用SQL手段完成。 不幸的是,您沒有提到要使用哪個特定的數據庫管理系統,因為ANSI SQL中沒有這種功能。 例如,如果您使用MySQL INSERT ... ON DUPLICATE KEY UPDATE就是必須的方法。

例如:

<insert id="instSample" parameterType="SampleModel">
   INSERT INTO table (a,b,c) VALUES (#{a}, #{b}, #{c})
   ON DUPLICATE KEY UPDATE c = #{c};
</insert>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM