點評 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 id="insert_table " parameterClass="java.util.List">
insert all
<iterate conjunction="">
into sj_test( col1 , col2 , col3 ) values
(#test[]. col1 #, # test []. col2 #, # test []. col3 #)
</iterate>
<!--必須要加上 -->
select * from dual
</insert>
這種方式,Oracle支援,其他的資料庫就不知道支不支援,但是這種方式有個侷限性,就是你插入的表的列數* 你插入的行數 <1000 才有效
如:
我今天需要插入的表有13列欄位,總共需要插入246行,在執行的時候,他就報:ORA-24335 cannot support more than 1000 columns
第三種方式
<insert id="insert_table" parameterClass="java.util.List">
insert into
sj_test( col1 , col2 , col3 ) values select
col1 , col2 , col3
from (
<iterate conjunction=" union all ">
select
#test[].col1# as
col1 , #test []. col2# as
col2, # test[].col3# as
col3 from dual
</iterate>
)
</insert>
這種方式 是先將List裡面的值,迴圈拼接成一個查詢虛擬表,然後再通過查詢虛擬表,獲取每一行的資料 插入到你需要插入的表裡面去. 這樣的話有個需要注意的地方,就是你拼接的SQL語句的長度有沒有超過Oracle的最大長度,不過Oracle的最大長度是64KB,你的SQL語句應該不會寫這麼長吧?
相關文章
- 【MyBatis】幾種批量插入效率的比較MyBatis
- Spring Data JPA中實現更新插入三種方法Spring
- 全面分析插入排序的三種插入方式排序
- Mybatis批量更新三種方式MyBatis
- mybatis插入資料、批量插入資料MyBatis
- 018-html插入樣式的三種方式HTML
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- 使用MySqlBulkLoader批量插入資料MySql
- insert批量插入優化方案優化
- C語言:排列陣列的三種方法:冒泡法、選擇法、插入法C語言陣列
- LINUX 使用批量刪除檔案的幾種方法Linux
- MySql避免重複插入記錄的幾種方法MySql
- 三種免費批量下載QQ空間相簿方法-2018.05.20親測有效
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 點選一列顯示其index的三種方法Index
- 使用PrepareStatement實現批量插入操作REST
- 使用Mybatis批量插入大量資料的實踐MyBatis
- MySql插入唯一鍵衝突的三種可選方式MySql
- PHP配上MySQL實現批量更新插入PHPMySql
- Oracle批量插入資料insert all into用法Oracle
- 正規表示式處理批量插入
- 使用 【Ado.Net】 批量插入資料
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- 「有點收穫」三種基本方法建立執行緒執行緒
- Go 中的三種排序方法Go排序
- 解析Json字串的三種方法JSON字串
- js解析url的三種方法JS
- CSS的三種使用方法CSS
- EF批量插入太慢?那是你的姿勢不對
- css實現三欄佈局的幾種方法及優缺點CSS
- db2 sql批量插入一張表插入另一張表DB2SQL
- 三種交換變數的方法變數
- Tomcat 部署專案的三種方法Tomcat
- bean例項化的三種方法Bean
- 隱藏IP地址的三種方法
- 改變IP地址的三種方法
- 驗證代理IP的三種方法
- 代理IP檢測的三種方法
- Linux 上截圖的三種方法Linux