[英]MyBatis do a fetch and based on return value do an update/insert inside the Xxxmapper.xml?
有没有一种方法可以在Mybatis插入SQL配置内嵌入select from table
的select 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.