zoukankan      html  css  js  c++  java
  • springMVC中使用oracle批量插入的书写方法

    当进行大批量数据插入(例如excel导入)时候;很明显每一条数据运行一条sql语句是不合理的,时间就是金钱、这种把时间浪费在重复的和spring管理据库连接池建立、断开连接的行为是低效的;
    oracle的批量插入和MySQL不一样,在springMVC的xml文件中写法如下

    ①传参parameterType是个对象的List集合。

    ②collection="list" 是固定写法;item="dealCp" 这里建议写你的对象名称;

    separator

    UNION操作符用于合并两个或多个SELECT语句的结果集UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型,同时,每条SELECT语句中列的顺序必须相同;

    union操作符合并的结果集,不会允许重复值,如果允许有重复值的话,separator="union all"

     ③ 前面的i是实体类中的属性名称,后面的jdbcType=VARCHAR是对应字段的数据库中的类型,不可写错;

     1 <!-- 银行数据导入 -->
     2     <insert timeout="100" id="insertBankList" parameterType="java.util.List" >
     3         INSERT INTO bank_deal(
     4         id,
     5         batch_number,
     6         code,
     7         name,
     8         card,
     9         bank_card,
    10         money,
    11         dates,
    12         time
    13         )
    14         <foreach collection="list" item="dealCp" separator="union all">
    15               SELECT #{dealCp.bankId,jdbcType=VARCHAR},
    16             #{dealCp.batchNumber,jdbcType=VARCHAR},
    17             #{dealCp.code,jdbcType=VARCHAR},
    18             #{dealCp.name,jdbcType=VARCHAR},
    19             #{dealCp.card,jdbcType=VARCHAR},
    20             #{dealCp.bankCard,jdbcType=VARCHAR},
    21             #{dealCp.money,jdbcType=VARCHAR},
    22             #{dealCp.dates,jdbcType=VARCHAR},
    23             #{dealCp.time,jdbcType=VARCHAR}
    24             FROM dual
    25           </foreach>
    26     </insert>

     可能运行后出现报错 无效主机绑定名;通信通道收到中断;用户取消当前操作的问题;请移步我另外一篇博客 

    https://www.cnblogs.com/404code/p/11052264.html

  • 相关阅读:
    GNU GPL介绍
    《Getting Started with WebRTC》第一章 WebRTC介绍
    进一步解 apt-get 的几个命令
    状态模式----C++实现
    boost库asio详解1——strand与io_service区别
    Timer.5
    Timer.4
    Timer.3
    MFC定时器
    boost.asio系列——Timer
  • 原文地址:https://www.cnblogs.com/404code/p/11226751.html
Copyright © 2011-2022 走看看