W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
向數(shù)據(jù)庫(kù)插入重復(fù)數(shù)據(jù)通常并非有意而為之,而一旦出現(xiàn)主鍵沖突就會(huì)比較麻煩。一般的解決辦法是再次嘗試按照主鍵更新或者放棄這條數(shù)據(jù)。
HasorDB 中對(duì)于這種情況可以配置沖突策略,這樣就可以避免在寫(xiě)入數(shù)據(jù)時(shí)多余的代碼邏輯??蛇x的沖突策略有三個(gè)(報(bào)錯(cuò)、替換、忽略)
報(bào)錯(cuò)是默認(rèn)策略無(wú)需特別指定,這個(gè)策略下將會(huì)使用普通的 ?insert into
? 語(yǔ)句進(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ù)庫(kù) ?方言
?實(shí)現(xiàn)決定
ON DUPLICATE KEY UPDATE
?字句修飾 insert。 MERGE INTO ... WHEN MATCHED THEN ... WHEN NOT MATCHED THEN ...
?語(yǔ)句。提示
是否支持以及實(shí)現(xiàn)形式,以數(shù)據(jù)庫(kù)方言為準(zhǔn)
使用 ?替換
?策略只需要簡(jiǎ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ù)庫(kù) ?方言
?實(shí)現(xiàn)決定
INSERT IGNORE
? 語(yǔ)句。MERGE INTO ... WHEN NOT MATCHED THEN ...
? 語(yǔ)句。提示:
是否支持以及實(shí)現(xiàn)形式,以數(shù)據(jù)庫(kù)方言為準(zhǔn)。詳情查看 分頁(yè)與方言
使用 ?忽略
?策略只需要簡(jiǎ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)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: