<强>第一种强>
& lt;插入id=" insert_table " parameterClass=" java.util。在列表”; & lt; ! [CDATA [ 插入sj_test (col3 col1, col2)值 ]]比; & lt;迭代结合=薄ⅰ氨? & lt; ! [CDATA [ (#测试[]。col1 #, #测试[]。col2 #, #测试[]。col3 #) ]]比; & lt;/迭代比; & lt;/插入比;>之前这种方式是网上最常见的,但是也是问题最大的,今天把我彻底纠结了,弄了几个小时,最后发现,甲骨文<代码> 代码>不支持一个<代码> 代码>插入多个<代码>值> 代码的方式,不知道网友们被坑到了没,好像MySQL <代码> 代码>支持这种方式,所报的错误:<代码> 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代码> <代码>语句的长度有没有超过<代码>甲骨文> 代码的最大长度,不过<代码>甲骨文> 代码的最大长度是64 kb,你的SQL代码> <代码>语句应该不会写这么长吧?
<强>总结强>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
ibatis结合甲骨文批量插入三种方法的测评