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

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

Reactor:如何將實體 Flux 轉(zhuǎn)換為 DTO 對象 Flux

Reactor:如何將實體 Flux 轉(zhuǎn)換為 DTO 對象 Flux

婷婷同學(xué)_ 2024-01-28 16:20:38
我有一個用戶實體和一個角色實體。除了用戶實體有一個對應(yīng)于其各自角色的 id 的 role_id 字段之外,這些字段并不重要。由于 Spring Data R2DBC 不在實體之間建立任何形式的關(guān)系,因此我轉(zhuǎn)向 DTO 方法。我對 R2DBC 和反應(yīng)式編程作為一個整體非常陌生,我一生都無法弄清楚如何轉(zhuǎn)換Flux<User>我的存儲庫的 findAll() 方法將我返回到Flux<UserDto>. 我的 UserDto 類非常簡單:@Data@RequiredArgsConstructorpublic class UserDto {    private final User user;    private final Role role;}這是我想要制作的 UserMapper 類:@Service@RequiredArgsConstructorpublic class UserMapper {    private final RoleRepository roleRepo;    public Flux<UserDto> map(Flux<User> users)    {        //???    }}如何讓這個映射器將 a 轉(zhuǎn)換Flux<User>為Flux<UserDto>包含用戶各自角色的 a ?
查看完整描述

2 回答

?
米琪卡哇伊

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

假設(shè)您RoleRepository有一個findById()方法或類似的方法來查找Role給定的 ID,并且您的用戶對象有一個getRoleId(),您可以通過標準地圖調(diào)用來完成此操作:

return users.map(u -> new UserDto(u, roleRepo.findById(u.getRoleId())));

findById()或者在返回 a的情況下Mono

return users.flatMap(u -> roleRepo.findById(u.getRoleId()).map(r -> new UserDto(u, r)));

如果可能返回 null,您當(dāng)然可能想要添加額外的檢查getRoleId()。


查看完整回答
反對 回復(fù) 2024-01-28
?
蠱毒傳說

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

將數(shù)據(jù)從業(yè)務(wù)對象轉(zhuǎn)換為數(shù)據(jù)庫對象:


private static UserDAO covertUserBOToBUserDAO(UserBO userBO){

    return new UserDAO(userBO.getUserId(), userBO.getName(), userBO.getMobileNumber(), 

     userBO.getEmailId(), userBO.getPassword());

}

將數(shù)據(jù)從數(shù)據(jù)庫對象轉(zhuǎn)換為業(yè)務(wù)對象:


private static Mono<UserBO> covertUserDAOToBUserBO(UserDAO userDAO){

    return Mono.just(new UserBO(userDAO.getUserId(), userDAO.getName(), 

     userDAO.getMobileNumber(), userDAO.getEmailId(), userDAO.getPassword()));

}

現(xiàn)在異步服務(wù)(getAllUsers):


public Flux<UserBO> getAllUsers(){

        return userRepository.findAll().flatMap(UserService::covertUserDAOToBUserBO);

}

由于 flatMap 是異步的,因此我們可以從異步操作中受益,甚至可以將對象從 DAO 轉(zhuǎn)換為 BO。


同樣,如果保存數(shù)據(jù),那么我嘗試如下:


public Mono<UserBO> saveUser(UserBO userBO)

{

        return 

 userRepository.save(covertUserBOToBUserDAO(userBO)).flatMap(UserService::covertUserDAOToBUserBO);

}


查看完整回答
反對 回復(fù) 2024-01-28
  • 2 回答
  • 0 關(guān)注
  • 269 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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