ibatis结合甲骨文批量插入三种方法的测评

  

<强>第一种
  

        & lt;插入id=" insert_table " parameterClass=" java.util。在列表”;   & lt; ! [CDATA [   插入sj_test (col3 col1, col2)值   ]]比;   & lt;迭代结合=薄ⅰ氨?   & lt; ! [CDATA [   (#测试[]。col1 #, #测试[]。col2 #, #测试[]。col3 #)   ]]比;   & lt;/迭代比;   & lt;/插入比;之前      

这种方式是网上最常见的,但是也是问题最大的,今天把我彻底纠结了,弄了几个小时,最后发现,甲骨文<代码> 不支持一个<代码> 插入多个<代码>值> 支持这种方式,所报的错误:<代码> ora - 00933: SQL命令未正确结束

  

<强>第二种

        & lt;插入id=" insert_table " parameterClass=安⒉槐?   插入所有   & lt;迭代结合=薄氨?   成sj_test (col1、col2 col3)值   (#测试[]。col1 #, #测试[]。col2 #, #测试[]。col3 #)   & lt;/iterate>   & lt; !——必须要加上——比;   从双重选择*   & lt;/insert>      

这种方式,甲骨文<代码> 支持,其他的数据库就不知道支不支持,但是这种方式有个局限性,就是你插入的表的列数*你插入的行数& lt; 1000年才有效

  如:

  

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

  

他就报:<代码> ora - 24335, cannot  support  more  than  1000年,列

  

<强>第三种方式

        & lt;插入id=" insert_table " parameterClass=安⒉槐?   插入sj_test (col3 col1, col2)值选择   col1, col2 col3   从(   & lt;迭代结合=" union all "比;   选择   #测试[]。col1 col1 #, #测试[]。col2 col2 #, #测试[]。col3 # col3从双   & lt;/iterate>   )   & lt;/insert>      

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

  

<强>总结

  

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

ibatis结合甲骨文批量插入三种方法的测评