zoukankan      html  css  js  c++  java
  • 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: 无法在源表中获得一组稳定的行

  • 相关阅读:
    Datasnap http用户验证
    Delphi 接口机制真相
    tfmxobject的序列化
    delphi md5算法
    delphi xe 窗体子控件实现窗体拖动
    Delphi笔记-自定义组件
    DELPHI RES资源文件使用方法
    Delphi中WebBrowser的使用技巧汇总
    Delphi XE调用第三方库Jni详细过程
    使用VLC进行屏幕广播
  • 原文地址:https://www.cnblogs.com/xianshen/p/13271979.html
Copyright © 2011-2022 走看看