精华内容
下载资源
问答
  • insert into T_POSS_MERCHANT_BENEFICIARY (ID, MERCHANT_ID, NAME, LICENSE_TYPE_CODE, LICENSE_NO, EFFECT_DATE, INVALID_DATE, IS_LONG_TIME, ADDRESS, IS_DELETE, CREATE_TIME, UPDA...
    
      <insert id="insertBatchBeneficiary" parameterType="java.util.List" useGeneratedKeys="false">
          insert into T_POSS_MERCHANT_BENEFICIARY (ID, MERCHANT_ID, NAME,
          LICENSE_TYPE_CODE, LICENSE_NO, EFFECT_DATE,
          INVALID_DATE, IS_LONG_TIME, ADDRESS,
          IS_DELETE, CREATE_TIME, UPDATE_TIME
          )
        SELECT SEQ_T_POSS_BENEFICIARY.nextval,a.* from(
            <foreach collection="list" item="item" separator="UNION ALL">
              SELECT
                #{item.merchantId,jdbcType=DECIMAL} as a, #{item.name,jdbcType=VARCHAR} as b,
                #{item.licenseTypeCode,jdbcType=VARCHAR} as c, #{item.licenseNo,jdbcType=VARCHAR} as d,
                 #{item.effectDate,jdbcType=VARCHAR} as e,#{item.invalidDate,jdbcType=VARCHAR} as f,
                  #{item.isLongTime,jdbcType=DECIMAL} as g, #{item.address,jdbcType=VARCHAR} as h,
                 0 as i, sysdate as j, sysdate as k
                FROM dual
             </foreach>
            ) a
      </insert>
      1、注意需要别名
      
    
    展开全文
  • 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库中的两种方式,非常不错,具有参考借鉴价值,需要的朋友参考下吧
  • mybatis oracle批量插入

    2020-06-08 16:56:02
    mybatis Oracle批量插入与MySQL不同 <insert id="insetList" parameterType="java.util.List" useGeneratedKeys="false"> insert into T_INSPOLCY_CHECKFORBATCH (ID,INSPOLCYNO,INSBILLNO,BATCHPAGENAME,...

    mybatis Oracle的批量插入与MySQL不同

    <insert id="insetList" parameterType="java.util.List" useGeneratedKeys="false">
        insert into T_INSPOLCY_CHECKFORBATCH (ID,INSPOLCYNO,INSBILLNO,BATCHPAGENAME,INPUTDATE,BTCHBILLNO)
          select POLCY_CHECKFORBATCH_SEQ.nextval ID,A.* from (
        <foreach collection="list" item="batch" index="index" separator="union all">
          select
             #{batch.INSPOLCYNO} INSPOLCYNO,#{batch.INSBILLNO} INSBILLNO,#{batch.BATCHPAGENAME} BATCHPAGENAME,sysdate INPUTDATE,#{batch.BTCHBILLNO} BTCHBILLNO
          from dual
        </foreach>
        ) A
      </insert>
    
    展开全文
  • 参考:mybatisoracle批量操作:https://blog.csdn.net/dzhuqiaolun/article/details/54864521 写法一: &lt;insert id="insertAttractionsBatch" parameterType="java.util.List"...

    参考:mybatis 对 oracle 的批量操作:https://blog.csdn.net/dzhuqiaolun/article/details/54864521

    写法一:

    <insert id="insertAttractionsBatch" parameterType="java.util.List" useGeneratedKeys="false">
    insert into ATTRACTIONS (
    ID, NAME, LONGITUDE, LATITUDE,  UPDATE_TIME
    )
      <foreach collection="list" item="item" index="index" separator="union all" > 
          (select  
    	#{item.id,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, 
    	#{item.longitude,jdbcType=DECIMAL}, #{item.updateTime,jdbcType=TIMESTAMP}
           from dual)
        </foreach>
    </insert>

    写法二:

    INSERT ALL INTO tb_red VALUES(1000, 8001, '2016-10-10 10:59:59', 1, 8001, '测试用户1000', '红名单0', '男', '膜法学院', '被测')
    INTO tb_red  VALUES (1001, 8001, '2016-10-10 11:00:00', 2, 8001, '测试用户1001', '红名单1', '男', '膜法学院', '被测')
    INTO tb_red  VALUES (1002, 8001, '2016-10-10 11:00:01', 0, 8001, '测试用户1002', '红名单2', '男', '膜法学院', '被测')
    INTO tb_red  VALUES (1003, 8001, '2016-10-11 10:59:59', 1, 8001, '测试用户1003', '红名单3', '男', '膜法学院', '被测')
    INTO tb_red  VALUES (1004, 8001, '2016-10-11 11:00:00', 2, 8001, '测试用户1004', '红名单4', '男', '膜法学院', '被测')
    INTO tb_red  VALUES (1005, 8001, '2016-10-11 11:00:01', 0, 8001, '测试用户1005', '红名单5', '男', '膜法学院', '被测')
    select 1 from dual;
    
    <!-- 保存新增数据 -->
    	<insert id="saveDatalist" parameterType="java.util.List" useGeneratedKeys="false">
    	  INSERT ALL
    		<foreach collection = "list" item ="item" index ="index">
    			into ${item.p_code}
    			<foreach collection="item.list" item="k" index="index" open="(" separator="," close=")">
    				${k}
    			</foreach>
    			values
    			<foreach collection="item.list" item="k" index="index" open="(" separator="," close=")">
    				${item.pama[k]}
    			</foreach>
    		</foreach>
    	  select 1 from dual
    	</insert>

     

    展开全文
  • 本文给大家介绍Oracle+Mybatis的foreach insert批量插入报错的快速解决办法,非常不错,具有参考借鉴价值,感兴趣的朋友参考下吧
  • 导语:在开发中或多或少都会遇到数据批量插入的功能,最近我在做项目的过程中就遇到了这样一个问题。上传Excel文件,解析文件内容并将解析的内容插入数据库。思路分析1.解析Excel文件Excel文件解析使用apache.poi包...

    导语:在开发中或多或少都会遇到数据批量插入的功能,最近我在做项目的过程中就遇到了这样一个问题。上传Excel文件,解析文件内容并将解析的内容插入数据库。

    思路分析

    1.解析Excel文件

    Excel文件解析使用apache.poi包下的工具,maven工程只需要在pom.xml添加下列依赖就可以

    org.apache.poi

    poi

    3.14

    org.apache.poi

    poi-ooxml

    3.14

    具体解析逻辑不是本文讨论的重点,暂时忽略。

    2.封装数据

    也不是本文讨论重点

    3.插入数据到数据库

    我们知道Oracle数据库批量插入有两种方式,第一种方式循环insert,效率低的要死。我这里讨论的是第二种方式。

    最初我采用的如下方式:foreach

    INTO T_APPLAUD

    (

    ID,

    USER_ID,

    BUSINESS_TYPE,

    PRODUCT_ID,

    CREATE_TIME

    ) VALUES

    (

    #{item.id, jdbcType=NUMERIC},

    #{item.userId, jdbcType=VARCHAR},

    #{item.businessType, jdbcType=VARCHAR},

    #{item.productId, jdbcType=VARCHAR},

    #{item.createdTime, jdbcType=NUMERIC}

    )

    代码写的很漂亮,但是效果却没有出现,直接报错:

    java.sql.SQLException: ORA-00933: SQL 命令未正确结束

    查阅相关资料才知道,Oracle没有这种语法。MySql对上述语法支持。所以需要将SQL做如下修改

    INSERT ALL

    INTO T_APPLAUD

    (

    ID,

    USER_ID,

    BUSINESS_TYPE,

    PRODUCT_ID,

    CREATE_TIME

    ) VALUES

    (

    #{item.id, jdbcType=NUMERIC},

    #{item.userId, jdbcType=VARCHAR},

    #{item.businessType, jdbcType=VARCHAR},

    #{item.productId, jdbcType=VARCHAR},

    #{item.createdTime, jdbcType=NUMERIC}

    )

    SELECT 1 FROM DUAL

    还有一种方式:

    INSERT INTO T_APPLAUD

    (

    ID,

    USER_ID,

    BUSINESS_TYPE,

    PRODUCT_ID,

    CREATE_TIME

    )

    (

    SELECT

    #{item.id},

    #{item.userId},

    #{item.businessType},

    #{item.productId},

    #{item.createdTime}

    FROM DUAL

    )

    两种方式更推荐使用第二种方式,我在项目中就是使用的第二种方式。

    但是在使用的过程中又遇到了新的问题,当插入的数据超过4000条的时候,mybatis执行的时候报错:

    ORA-01745:无效的主机/绑定变量名

    分析判断是因为union all插入sql太长,导致程序解析SQL出错。针对上述情况,我想到的解决方案是,分段插入提交,但是这样又会导致事务不统一。在此分享一下我的处理逻辑,代码就不粘贴了,采用伪代码的形式描述

    //将数据源分割成多个小List。

    List> subLists = splitList(List resource,int size);

    //遍历subLists,分别调用批量插入方法,

    inertService.insertList(list);//这里可以采用多线程来实现,

    //当所有线程全部执行完毕,检测插入条目和数据源是否相同,如果相同,插入成功,如果不同,插入异常,将异常插入的数据全部删除。

    展开全文
  • mybatis oracle 批量插入返回主键

    千次阅读 2017-07-19 14:05:48
    mybatis 单个和批量插入MySQL与Oracle配置说明 1. mysql [html] view plain copy xml version="1.0" encoding="UTF-8" ?>  >  mapper namespace=...
  • 1、批量插入 &lt;insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false"&gt; INSERT INTO FLB_FLIGHT_LOG_FOC ( ID,FLIGHT_...
  • Java实现使用Mybatis将数据批量插入Oracle数据库,并且可以使用Oracle序列来生成主键
  • mybatis oracle 批量插入

    2015-08-05 16:31:59
    1.项目中用的是mybatis框架,插入1500条数据,是遍历list,1500次...2.所以,想到批量插入。以下是针对oracle的写法,数据库 不同,写法不一样的哦,这点需要注意以下   insert into xtgl_role_privs(recid,role_i
  • Mybatis Oracle批量插入

    2018-12-26 11:51:32
    -- 批量插入 --&gt; &lt;insert id="batchInsert" parameterType="java.util.List"&gt; insert into 表名 (列1,列2,...) SELECT 序列号, A.* FROM( &lt;foreach ...
  • mybatis实现批量插入语句(Oracle) 前段时间,遇到需要批量插入数据的问题。当时mapper中语法习惯写成了mysql语法,自测时报错。后来发现是因为不是Oracle支持语句的原因。Oracle支持语法示例: 1、dao中方法入参...
  • MyBatis Oracle批量插入

    2017-04-08 13:44:47
    MyBatis Oracle批量插入
  • 开发中,在有clob的批量插入过程中,用Java中的String类型通过mybatis进行插入,并且同时有序列。当前试下来,只有一种方式。就只有begin end有用。 begin XXX; XXX; end; 接下来讲下详细过程。 Mybatis...
  • 主要介绍了spring中使用mybatis实现批量插入的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • ①带主键自增的批量插入 Mapper.xml文件: <!-- 批量插入 --> <insert id="addByUser" parameterType="java.util.List" useGeneratedKeys="false"> insert into ts_app_dxdz(ID, USERID,TYPEID, PZ
  • myBatis批量插入Oracle

    2021-05-02 00:46:24
    name(column1,column2,column3,column4)(select #{toplist.COLUMN1,jdbcType=VARCHAR},#{toplist.COLUMN2,jdbcType=NUMERIC},0,#{toplist.COLUMN4,jdbcType=VARCHAR} from dual)注意:myBatis批量插入和m...
  • Mybatis Oracle 批量插入

    千次阅读 2018-05-18 12:02:47
    以下是批量插入的demo 大家可以参考,也算我爬过的坑 --- 带序列主键的批量插入 &lt;insert id="addCheckDetail" parameterType="java.util.List"&gt; INSERT INTO CHECK_DETAIL...
  • 问题:用mybaits 批量插入数据到Oracle 数据库的时候, 报错: ORA-00933: SQL 命令未正确结束 / ORA-00933: SQL command not properly ended ; 意思就是 语法错误  原因: oracle 批量插入与mysql 的批量...
  • mybatis批量插入的sql语法(Oracle) 文章目录mybatis批量插入的sql语法(Oracle)前言一、使用步骤1. 实体类展示2.mapper.java代码3.mapper.xml代码4.调用总结 前言 在企业开发中比如开发一个后台管理系统,会存在...
  • mybatis Oracle 批量插入,批量更新 传入的参数只要是list类型的参数就行了。。。。。。。。。。。。。。 1、批量插入 &lt;insert id="insertBatch" parameterType="java.util.List"&...
  • Mybatis+Oracle批量插入数据

    千次阅读 2018-04-19 15:40:33
    一般有两种方式可以解决:方式一:单条数据插入缺点:数据多的时候效率太慢,不建议使用方式二:批量插入Mybatis本身是很灵活的,因为可以自己在XML文件中编写sql进行操作,那就可以一次性将插入到数据库中,这样只用...
  • 实现了oracle多条数据的插入,并通过优化,防止内存不足和缩短运行时间,另外通过mybatis的generator工具自动生成dao层,vo层,xml层文件.
  • Mybatis实现oracle批量插入,主键问题

    千次阅读 2018-03-21 14:06:53
    由于Oracle中没有主键自增,所以在应用MyBatis实现Oracle批量插入操作的时候,我们可以使用序列的形式 创建对应的序列: create sequence gra_seq MyBatis批量插入SQL语句: insert into groleauthen(ra...
  • Java实现Mybatis将数据批量插入Oracle
  • 前言 很多时候我们都需要对数据进行批量插入,然后希望...之前晚上搜索了很多oracle批量插入的例子,但是都无法将主建ID返回,多次尝试后发现oracle批量插入有一个特性:可以将查询到的集合插入至表中,也就是使用inse
  • mybatis oracle批量插入数据(不需要:自动生成主键的时候) 1,Mapper.xml <insert id="addList" parameterType="java.util.List" useGeneratedKeys="false"> INSERT INTO userinfo ( ID, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,091
精华内容 2,436
关键字:

mybatisoracle批量插入