W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
向數(shù)據(jù)庫插入重復(fù)數(shù)據(jù)通常并非有意而為之,而一旦出現(xiàn)主鍵沖突就會(huì)比較麻煩。一般的解決辦法是再次嘗試按照主鍵更新或者放棄這條數(shù)據(jù)。
HasorDB 中對(duì)于這種情況可以配置沖突策略,這樣就可以避免在寫入數(shù)據(jù)時(shí)多余的代碼邏輯??蛇x的沖突策略有三個(gè)(報(bào)錯(cuò)、替換、忽略)
報(bào)錯(cuò)是默認(rèn)策略無需特別指定,這個(gè)策略下將會(huì)使用普通的 ?insert into
? 語句進(jìn)行數(shù)據(jù)插入。
TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser).executeSumResult();
由于默認(rèn)就是 ?into
?,因此下面這段代碼和上面的是等價(jià)的
TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser)
.onDuplicateStrategy(DuplicateKeyStrategy.Into)
.executeSumResult();
替換策略的實(shí)現(xiàn)是根據(jù)具體數(shù)據(jù)庫 ?方言
?實(shí)現(xiàn)決定
ON DUPLICATE KEY UPDATE
?字句修飾 insert。 MERGE INTO ... WHEN MATCHED THEN ... WHEN NOT MATCHED THEN ...
?語句。提示
是否支持以及實(shí)現(xiàn)形式,以數(shù)據(jù)庫方言為準(zhǔn)
使用 ?替換
?策略只需要簡單的設(shè)置一下策略屬性
TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser)
.onDuplicateStrategy(DuplicateKeyStrategy.Update)
.executeSumResult();
忽略策略的實(shí)現(xiàn)是根據(jù)具體數(shù)據(jù)庫 ?方言
?實(shí)現(xiàn)決定
INSERT IGNORE
? 語句。MERGE INTO ... WHEN NOT MATCHED THEN ...
? 語句。提示:
是否支持以及實(shí)現(xiàn)形式,以數(shù)據(jù)庫方言為準(zhǔn)。詳情查看 分頁與方言
使用 ?忽略
?策略只需要簡單的設(shè)置一下策略屬性
TestUser testUser = ...
LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser)
.onDuplicateStrategy(DuplicateKeyStrategy.Ignore)
.executeSumResult();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: