繁体   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