99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

HasorDB 沖突策略

2022-01-10 10:04 更新

向數(shù)據(jù)庫插入重復數(shù)據(jù)通常并非有意而為之,而一旦出現(xiàn)主鍵沖突就會比較麻煩。一般的解決辦法是再次嘗試按照主鍵更新或者放棄這條數(shù)據(jù)。

HasorDB 中對于這種情況可以配置沖突策略,這樣就可以避免在寫入數(shù)據(jù)時多余的代碼邏輯??蛇x的沖突策略有三個(報錯、替換、忽略)

報錯?

報錯是默認策略無需特別指定,這個策略下將會使用普通的 ?insert into? 語句進行數(shù)據(jù)插入。

TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser).executeSumResult();

由于默認就是 ?into ?,因此下面這段代碼和上面的是等價的

TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser)
                   .onDuplicateStrategy(DuplicateKeyStrategy.Into)
                   .executeSumResult();

替換?

替換策略的實現(xiàn)是根據(jù)具體數(shù)據(jù)庫 ?方言 ?實現(xiàn)決定

  • 對于 MySQL 將會使用 ?ON DUPLICATE KEY UPDATE ?字句修飾 insert。
  • 對于 Oracle 將會使用? MERGE INTO ... WHEN MATCHED THEN ... WHEN NOT MATCHED THEN ... ?語句。
提示
是否支持以及實現(xiàn)形式,以數(shù)據(jù)庫方言為準

使用 ?替換 ?策略只需要簡單的設置一下策略屬性

TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser)
                   .onDuplicateStrategy(DuplicateKeyStrategy.Update)
                   .executeSumResult();

忽略?

忽略策略的實現(xiàn)是根據(jù)具體數(shù)據(jù)庫 ?方言 ?實現(xiàn)決定

  • 對于 MySQL 將會使用? INSERT IGNORE? 語句。
  • 對于 Oracle 將會使用 ?MERGE INTO ... WHEN NOT MATCHED THEN ...? 語句。
提示:
是否支持以及實現(xiàn)形式,以數(shù)據(jù)庫方言為準。詳情查看 分頁與方言

使用 ?忽略 ?策略只需要簡單的設置一下策略屬性

TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser)
                   .onDuplicateStrategy(DuplicateKeyStrategy.Ignore)
                   .executeSumResult();


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號