第一种
< 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 >
< 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

本文介绍了在使用iBatis与Oracle数据库进行批量插入时遇到的问题及三种解决方案。第一种方式由于Oracle不支持一个insert多个values导致错误。第二种方式虽然Oracle支持,但受限于列数和行数的乘积不能超过1000。第三种方式通过创建查询虚拟表避免了上述限制,但需要注意SQL语句的长度不超过Oracle的最大长度(64KB)。
最低0.47元/天 解锁文章
932

被折叠的 条评论
为什么被折叠?



