ibatis结合oracle批量插入三种方法的测评

网友投稿 511 2023-01-17


ibatis结合oracle批量插入三种方法的测评

第一种

< 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 all

into sj_test( col1 , col2 , col3 ) values

(#test[]. chttp://ol1 #, # test [].jvpuxIYDB col2 #, # test []. col3 #)

select * from dual

这种方式,Oracle支持,其他的数据库就不知道支不支持,但是这种方式有个局限性,就是你插入的表的列数* 你插入的行数 <1000 才有效

如:

我今天需要插入的表有13列字段,总共需要插入246行,在执行的时候

他就报:ORA-24335 cannot support more than 1000 columns

第三种方式

insert into sj_test( col1 , col2 , col3 ) values select

col1 , col2 , col3

from (

select

#test[].col1# as col1 , #test []. colhttp://2# as col2, # test[].http://col3# as col3 from dual

)

这种方式 是先将List里面的值,循环拼接成一个查询虚拟表,然后再通过查询虚拟表,获取每一行的数据 插入到你需要插入的表里面去.    这样的话有个需要注意的地方,就是你拼接的SQL语句的长度有没有超过Oracle的最大长度,不过Oracle的最大长度是64jvpuxIYDBKB,你的SQL语句应该不会写这么长吧?

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:实现接口要使用的关键词(接口使用的关键字)
下一篇:苹果接口管理工具怎么用(苹果接口管理工具怎么用不了)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~