oracle mybatis(Mergr into语句带序列)添加数据时如果数据存在就更新,如果不存在就插入
2018-03-02 15:16
621 查看
merge语法根据源表(也可是临时生成的表)对目标表进行查询匹配,匹配成功时执行更新操作,不成功时执行插入操作。1.基本语法:
merge into 目标表 T
using 源表 T1
on (T.xx1 = T1.xx1 and T.xx2=T1.xx2/*匹配条件*/)
when matched then update set
/*需要更新的字段*/
T.x = T1.x...
when not matched then insert
(
字段1,
字段2...
)
values(
值1,
值2...
)
<insert id="saveOrUpdateBatch" parameterType="java.util.List">
MERGE INTO T_ZZ_RS_EDU T
USING (
<foreach collection="list" item="item" index="index" separator="union">
(select #{item.eduExpid,jdbcType=DECIMAL} AS RS_EID,
#{item.personName,jdbcType=VARCHAR} AS NAME_,
#{item.idCard,jdbcType=VARCHAR} AS IDCARD,
#{item.populationId,jdbcType=DECIMAL} AS CI_RS_ID,
#{item.startDate,jdbcType=TIMESTAMP} AS START_DATE,
#{item.endDate,jdbcType=TIMESTAMP} AS END_DATE,
#{item.workUnit,jdbcType=VARCHAR} AS WORK_UNIT,
#{item.workDuty,jdbcType=VARCHAR} AS WORK_DUTY,
#{item.regionCode,jdbcType=VARCHAR} AS REGION_CODE,
#{item.status_,jdbcType=VARCHAR} AS STATUS_,
#{item.creatorId,jdbcType=DECIMAL} AS CREATOR,
#{item.createTime,jdbcType=TIMESTAMP} AS CREATE_TIME,
#{item.updaterId,jdbcType=DECIMAL} AS UPDATER,
#{item.updateTime,jdbcType=TIMESTAMP} AS UPDATED,
#{item.resumeType,jdbcType=VARCHAR} AS RESUME_TYPE
from dual)
</foreach>) T1
ON(T1.RS_EID = T.RS_EID)
/*数据存在*/
WHEN MATCHED THEN
UPDATE SET
T.RESUME_TYPE/*需要更新的字段*/=T1.RESUME_TYPE,/*需要更新的字段*/
T.START_DATE=T1.START_DATE,
T.END_DATE=T1.END_DATE,
T.WORK_UNIT=T1.WORK_UNIT,
T.WORK_DUTY=T1.WORK_DUTY
/*数据不存在*/
WHEN NOT MATCHED THEN
INSERT
(
T.RS_EID,
T.NAME_,
T.IDCARD,
T.CI_RS_ID,
T.START_DATE,
T.END_DATE,
T.WORK_UNIT,
T.WORK_DUTY,
T.REGION_CODE,
T.STATUS_,
T.CREATOR,
T.CREATE_TIME,
T.UPDATER,
T.UPDATED,
T.RESUME_TYPE
)
VALUES
(
SEQ_RS_EID.NEXTVAL,
T1.NAME_,
T1.IDCARD,
T1.CI_RS_ID,
T1.START_DATE,
T1.END_DATE,
T1.WORK_UNIT,
T1.WORK_DUTY,
T1.REGION_CODE,
T1.STATUS_,
T1.CREATOR,
T1.CREATE_TIME,
T1.UPDATER,
T1.UPDATED,
T1.RESUME_TYPE
)
</insert>
相关文章推荐
- mybatis+oracle添加数据时如果数据存在就更新,如果不存在就插入
- mybatise+oracle添加数据时如果数据存在就更新,如果不存在就插入
- mysql_mybatis添加数据时如果数据存在就更新,如果不存在就插入
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- 如何实现插入时如果不存在则插入如果存在则更新的操作(分别用oracle、MySQL和SQL Server实现)
- C# 用sql insert into 语句向oracle插入数据数据一直未更新
- mysql判断一条记录是否存在,如果存在,则更新此语句,如果不存在,则插入
- mysql如何实现插入数据时如果不存在则插入如果存在则更新的操作
- Mysql 如果数据存在则更新,不存在则插入
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- mysql判断一条记录是否存在,如果存在,则更新此语句,如果不存在,则插入
- MYSQL 数据表中行存在时更新,不存在时插入的SQL语句
- mysql 如果不存在则插入(insert) 如果存在则更新(update)
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- MySQL新增数据,存在就更新,不存在就添加
- 转 SSIS处理导入数据时, 存在的更新, 不存在的插入
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- PostgreSQL数据库如果不存在则插入,存在则更新
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)