ibatis结合oracle批量插入三种方法的测评
第一种
这种方式是网上最常见的,但是也是问题最大的,今天把我彻底纠结了,弄了几个小时,最后发现,Oracle不支持一个insert多个values的方式,不知道网友们被坑到了没,好像MySQL支持这种方式,所报的错误:ORA-00933:SQL命令未正确结束
第二种
insertall intosj_test(col1,col2,col3)values (#test[].col1#,#test[].col2#,#test[].col3#) select*fromdual
这种方式,Oracle支持,其他的数据库就不知道支不支持,但是这种方式有个局限性,就是你插入的表的列数*你插入的行数<1000才有效
如:
我今天需要插入的表有13列字段,总共需要插入246行,在执行的时候
他就报:ORA-24335 cannot support more than 1000 columns
第三种方式
insertintosj_test(col1,col2,col3)valuesselect col1,col2,col3 from( select #test[].col1#ascol1,#test[].col2#ascol2,#test[].col3#ascol3fromdual )
这种方式是先将List里面的值,循环拼接成一个查询虚拟表,然后再通过查询虚拟表,获取每一行的数据插入到你需要插入的表里面去. 这样的话有个需要注意的地方,就是你拼接的SQL语句的长度有没有超过Oracle的最大长度,不过Oracle的最大长度是64KB,你的SQL语句应该不会写这么长吧?
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接