mybatis加oracle批量插入各種情況說明

2021-09-02 01:31:04 字數 1643 閱讀 5707

最近需要將大量xml資料經過轉換存在oracle資料庫中,因為有大量的資料,所以採用批量操作,至於優點相信你在看的時候已經大概諒解了,具體操作我就分步驟說明一下,希望對你有幫助。

為了避免資料庫欄位過多給讀者造成閱讀負擔,只在資料庫中建立乙個擁有乙個主鍵和兩個欄位的表

一  ,批量插入如果主鍵重複主鍵不變根據主鍵更新,不重複的資料直接插入

表中資料

sql如下 :

merge into users t

using (

select # as id,

# as name,

# as age

from dual

) t1

on (t1.id = t.id)

when matched then

update set t.name = t1.name,

t.age = t1.age

when not matched then

insert

(id, name, age)

values (t1.id,t1.name,t1.age)

測試方法

執行結果分析,主鍵從5開始以前資料為中國,100。 現在插入日本,5條會被覆蓋,沒有的直接插入

二  ,批量插入不考慮主鍵重複,如果重複報主鍵衝突錯誤,否則全部插入。(我們專案採用這種方式,因為不考慮主鍵重複問題,使用的是oracle系統主鍵永遠不會重複)

insert into users ( id, name,  age )

(select  #,  #, #  from dual )

三 ,單條資料主鍵重複的情況下,直接根據主鍵更新資料

原資料:

sql 語句:

merge into users t

using (

select # as id,  # as name,  # as age   from dual) t1

on (t1.id = t.id)

when matched then

update set t.name = t1.name, t.age = t1.age

when not matched then

insert  (id, name, age)  values (t1.id,t1.name,t1.age)

測試類:

結果:

oracle應用之使用sequence批量寫資料

本部落格是對之前寫的部落格oracle批量新增更新資料的補充,oracle的知識真是多,其實要學精任何一門知識都是要花大量時間的,正所謂 學如逆水行舟,不進則退 先介紹oracle sequence的一些知識,sequence顧名思義,就是建立乙個序列,這個序列沒調一次就會自動加,利用它這個特性,我...

MyBatis原始碼分析(三)批量更新

主要是org.apache.ibatis.executor.batchexecutor這個類,此類繼承baseexecutor 基本增刪改查,快取,懶載入處理 batchexecutor這個類有四個屬性 批處理更新最大返回結果 public static final int batch update...

mybatis原始碼閱讀之9 批量插入資料

在做專案的工程中,遇到過各種mybatis批量插入資料的需求。在各種水平的架構師提供的框架封裝中,也出現了好幾種對批量處理的不同封裝。根據我看過的 大致可以分三種情況。autowired for entertypedo d list 這是一種完全不負責任的做法,資料量大到一定級別時,插入很慢,而且可...