在写入数据的时候有时候需要根据数据库中是否含有该条数据来判断数据是插入还是更新,以下为ORACLE插入更新语法(单条数据录入)
<insert id="insertOrUpdate" parameterType="com.stylefeng.guns.rest.common.persistence.model.Token">
<selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id">
select SYS_SEQ.Nextval as id from DUAL
</selectKey>
MERGE INTO SYS_TOKEN a
USING (
SELECT #{id,jdbcType=INTEGER} as id,#{userId,jdbcType=INTEGER} as userId, #{uuid,jdbcType=VARCHAR} as uuid,#{osType,jdbcType=VARCHAR} as osType, #{osDevice,jdbcType=VARCHAR} as osDevice,
#{token,jdbcType=VARCHAR} as token,#{createDate,jdbcType=TIMESTAMP} as createDate,#{updateDate,jdbcType=TIMESTAMP} as updateDate,#{osVersion,jdbcType=VARCHAR} as osVersion
FROM DUAL
) b
ON (a.osType = b.osType AND a.uuid = b.uuid)
WHEN MATCHED THEN
UPDATE SET a.userId = b.userId,a.osDevice = b.osDevice, a.token = b.token,
a.updateDate = b.updateDate,a.osVersion = b.osVersion
WHEN NOT MATCHED THEN
INSERT (id, userId, uuid, osType, osDevice, token, createDate,updateDate, osVersion)
VALUES (b.id,b.userId,b.uuid,b.osType,b.osDevice,b.token,b.createDate,b.updateDate,b.osVersion)
</insert>
重要点:
该段为匹配条件,可添加多个条件,以AND相连