网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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

第一种

创新互联公司主要从事成都网站制作、成都网站建设、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务哈尔滨,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

< insert id =" insert_table " parameterClass ="java.util.List" >  
    
  < iterate conjunction ="," >  
      
    
 

这种方式是网上最常见的,但是也是问题最大的,今天把我彻底纠结了,弄了几个小时,最后发现,Oracle不支持 一个insert多个values的方式,不知道网友们被坑到了没,好像MySQL支持这种方式,所报的错误:ORA-00933:SQL命令未正确结束

第二种


 insert all
 
 into sj_test( col1 , col2 , col3 ) values 
 (#test[]. col1 #, # test []. 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 []. col2# as col2, # test[].col3# as col3 from dual

)

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

总结

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


网站题目:ibatis结合oracle批量插入三种方法的测评
本文来源:http://bjjierui.cn/article/ijscsp.html

其他资讯