点评 ibatis+oracle 批量插入的三种方法
来源:互联网 发布:淘宝阿迪旗舰店是正品 编辑:程序博客网 时间:2024/05/17 06:55
< insert id =" insert_table " parameterClass ="java.util.List" >
<![CDATA[
insert into sj_test( col1 , col2 , col3 ) values
]]>
< iterate conjunction ="," >
<![CDATA[
(#test[]. col1 #, # test []. col2 #, # test []. col3 #)
]]>
</ iterate >
</ insert >
这种方式是网上最常见的,但是也是问题最大的, 今天把我彻底纠结了,弄了几个小时,最后发现, Oracle不支持 一个insert多个values的方式, 不知道网友们被坑到了没,好像MySQL支持这种 方式 所报的错误:ORA-00933:SQL命令未正确结束
第二种
<insert id="insert_table " parameterClass="java.util.List">
insert all
<iterate conjunction="">
into sj_test( col1 , col2 , col3 ) values
(#test[]. col1 #, # test []. col2 #, # test []. col3 #)</iterate>
<!--必须要加上 -->
select * from dual
</insert>
这种方式,Oracle支持,其他的数据库就不知道支不支持,但是这种方式有个局限性,就是你插入的表的列数* 你插入的行数 <1000 才有效
如:
我今天需要插入的表有13列字段,总共需要插入246行,在执行的时候,他就报:ORA-24335 cannot support more than 1000 columns
第三种方式
<insert id="insert_table" parameterClass="java.util.List">
insert into sj_test( col1 , col2 , col3 ) values select
col1 , col2 , col3
from (
<iterate conjunction=" union all ">
select
#test[].col1# as col1 , #test []. col2# as col2, # test[].col3# as col3 from dual
</iterate>
)
</insert>
这种方式 是先将List里面的值,循环拼接成一个查询虚拟表,然后再通过查询虚拟表,获取每一行的数据 插入到你需要插入的表里面去. 这样的话有个需要注意的地方,就是你拼接的SQL语句的长度有没有超过Oracle的最大长度,不过Oracle的最大长度是64KB,你的SQL语句应该不会写这么长吧?
- 点评 ibatis+oracle 批量插入的三种方法.
- 点评 ibatis+oracle 批量插入的三种方法
- ibatis 的批量插入 批量更新数据
- ibatis 搭配oracle做批量插入小结
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- oracle批量插入数据的方法1
- Mybatis Oracle 批量插入数据的方法
- OracleBulkCopy 批量插入oracle数据库的方法
- ibatis 对数据批量插入方法
- mssql批量插入三种方法
- ibatis对oracle数据库的批量更新和批量插入的操作
- dubbo 延迟暴露
- 测试Android Studio自动生成Demo(Basic Activity)
- 设计模式(八)观察者模式
- Xcode磁盘空间清理
- 建筑学学长8年奋斗史
- 点评 ibatis+oracle 批量插入的三种方法
- linux date -d参数用法
- 强大的Spring缓存技术(中)
- 属性ID
- 打开WPF设计器提示错误未能从程序集 “Microsoft.Expression.DesignModel”.....
- lintcode,生成括号
- Linux下出现Read-only file system的解决办法
- 介绍10 款最好的 Python IDE
- Android控件显示/隐藏时添加动画:ViewSwitcher