第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Mono<Connection> 或 R2dbc 在 Spring 提供的

如何使用 Mono<Connection> 或 R2dbc 在 Spring 提供的

www說 2022-09-07 17:09:39
我不知道如何使用spring-webflux(反應(yīng)式)在R2dbc(java)中構(gòu)建有效的查詢。使用 R2dbc 提供的 DatabaseClient 對象(或者,連接對象),似乎我只能調(diào)用這兩種方法之一的不同變體:或 。如果我在Java中有一個模式和一個相應(yīng)的類,具有多個可為null的字段,那么我應(yīng)該如何有效地處理這個問題?bind(Object field, Object value)bindNull(Object field, Class<?> type)舉個例子:public Flux<Item> saveOrUpdate(Item entity) {   Mono<Connection> connection = this.connection;    Flux<? extends Result> itemFlux = connection       .doOnError(e -> e.printStackTrace())           .flatMapMany(connect  ->  connect.createStatement(INSERT_OR_UPDATE_ITEM)                .bind("itemId", entity.getItemId()).returnGeneratedValues("itemid")                .bind("auditId", entity.getTx().getId())                .bind("itemNum", entity.getItemNum())                .bind("itemCat", entity.getItemCat()) //nullable                 // How would I know when to use this?                .bindNull("sourcedQty", Integer.class) //nullable                .bind("makeQty", entity.getMakeQty())                .bind("nameShown", entity.getNameShown()) //nullable                .bind("price", entity.price())                .bind("dateCreated", entity.getDateCreated()) //nullable                .add()                .execute())...   ...}或public Mono<Item> saveOrUpdate(Item entity){   Mono<Item> itemMono = databaseClient.execute.sql(INSERT_OR_UPDATE_ITEM)      .bind("itemId", entity.getItemId()).returnGeneratedValues("itemid")                .bind("auditId", entity.getTx().getId())                .bind("itemNum", entity.getItemNum())                .bind("itemCat", entity.getItemCat())                .bind("sourcedQty", entity.getSourcedQty())                 .bind("makeQty", entity.getMakeQty())                .bind("nameShown", entity.getNameShown())                .bind("price", entity.price())                .bind("dateCreated", entity.getDateCreated())                .as(Item.class)                .fetch()                .one()...   ...}
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻1995條經(jīng)驗 獲得超2個贊

這是兩個問題:

  1. 如何以流暢的風(fēng)格將潛在的可為空的值綁定到/?StatementDatabaseClient

  2. 如何讓數(shù)據(jù)庫計算出其余部分?

R2DBC 和 Spring Data R2DBC 通過要求將值綁定到或綁定 .沒有方法可以接受可能為空的參數(shù)。這有兩個原因:nullStatementnull

  1. 你應(yīng)該處理可空性,以表明那里發(fā)生了什么。這是處理可為 null 的值的好習(xí)慣,而不是使處理隱式。的隱式本質(zhì)是導(dǎo)致最多錯誤的原因。nullnull

  2. 數(shù)據(jù)庫需要顯式。帶有占位符的參數(shù)化語句位于兩個塊的執(zhí)行端:SQL 語句本身和參數(shù)綁定(描述符)。參數(shù)描述符需要與占位符、類型信息 (、 、 、 ...) 和實際值相關(guān)聯(lián)。使用值進行調(diào)用時,驅(qū)動程序可以派生類型信息。綁定值時,驅(qū)動程序需要其他類型的信息。否則,我們無法執(zhí)行查詢。VARCHARBITINTbind(…)null

話雖如此:

  1. 沒有像bindPotentiallyNull("auditId", entity.getTx().getId(), Integer.class)

  2. 您無法在 SQL 查詢中執(zhí)行任何操作,因為綁定參數(shù)信息由輔助方法提供。

在談?wù)摯鎯^程時,我們面臨著類似的問題,因為存儲過程需要有關(guān)輸入/輸出/輸入輸出參數(shù)的其他詳細(xì)信息。我們討論了潛在的包裝器類型,例如

Parameters.in(@Nullable T value, Class<? super T> valueType)

所以這些可以用作包裝器

bind("auditId", Parameters.in(entity.getTx().getId(), Integer.class))


查看完整回答
反對 回復(fù) 2022-09-07
?
守著一只汪

TA貢獻1872條經(jīng)驗 獲得超4個贊

可以使用如下所示的類設(shè)置值或 null:Parameter


import org.springframework.r2dbc.core.Parameter;


// rest of the code


.bind("customerId", Parameter.fromOrEmpty(o.getCustomerId(), UUID.class))

早些時候,它是 ,未被棄用。SettableValue.fromOrEmpty


查看完整回答
反對 回復(fù) 2022-09-07
  • 2 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號