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

原文地址:https://www.cnblogs.com/404code/p/11226751.html