• mybatis 处理Oracle数据库实现批量添加数据(如果数据存在就更新,不存在就插入)


    1.xml中写数据存在就更新,不存在就插入sql逻辑(merge into 实现)

    <insert id="insertTableList" parameterType="java.util.List">
            merge into t_czk_transInfo_interface_temp t1
            USING (
            <foreach collection="list" item="element" index="index" separator="union all">
                select
                #{element.id} ID,
                #{element.remark} REMARK,
                #{element.crateDate} CRATE_DATE,
                #{element.res1} RES1,
                #{element.res2} RES2,
                #{element.res3} RES3,
                #{element.res4} RES4,
                #{element.res5} RES5
                from dual
            </foreach>) t2
            ON (
            t1.ID =  t2.ID
            )
            WHEN MATCHED THEN
            UPDATE
            SET
            t1.REMARK = t2.REMARK,
            t1.CRATE_DATE = t2.CRATE_DATE,
            t1.RES1 = t2.RES1,
            t1.RES2 = t2.RES2,
            t1.RES3 = t2.RES3,
            t1.RES4 = t2.RES4,
            t1.RES5 = t2.RES5
            WHEN NOT MATCHED THEN
            INSERT
            (ID,REMARK,CRATE_DATE,RES1,RES2,RES3,RES4,RES5)
            values
            (t2.ID,t2.REMARK,t2.CRATE_DATE,
            t2.RES1,t2.RES2,t2.RES3,t2.RES4,t2.RES5)
        </insert>

    2.dao层调用:

        /**
         * 批量插入数据
         * @param list 数据集合
         */
        void insertTableList(@Param("list") List<TempEntity> list);

    3.上述sql样式:

    merge into 要修改的表名  别名1
    
    using (select  要修改的字段1,要修改的字段2,  关联的字段 from 表名) 别名2
    
    on (别名1.关联字段 = 别名2. 关联字段)
    
    when matched  then update  set
    
     别名1.字段 = 别名2.字段
    
     别名1.字段 = 别名2.字段

    4注意:插入的集合list最好不能有重复数据,就是id最好没有重复,批量插入才不会报错,

    否则会报错:ORA-30926: 无法在源表中获得一组稳定的行

  • 相关阅读:
    Elasticsearch ES索引
    Eureka 服务注册与发现
    Cron 定时任务表达式
    如何在OS X上设置或更改默认的Java(JDK)版本?
    adb常用命令
    【charlse】charlse功能
    面试题
    【robotframework】robotframework基本使用
    【postman】postman使用教程
    【fiddler】fiddler基础
  • 原文地址:https://www.cnblogs.com/xianshen/p/13271979.html
Copyright © 2020-2023  润新知