2 回答

TA貢獻1998條經驗 獲得超6個贊
假設您RoleRepository
有一個findById()
方法或類似的方法來查找Role
給定的 ID,并且您的用戶對象有一個getRoleId()
,您可以通過標準地圖調用來完成此操作:
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,您當然可能想要添加額外的檢查getRoleId()
。

TA貢獻1895條經驗 獲得超3個贊
將數據從業務對象轉換為數據庫對象:
private static UserDAO covertUserBOToBUserDAO(UserBO userBO){
return new UserDAO(userBO.getUserId(), userBO.getName(), userBO.getMobileNumber(),
userBO.getEmailId(), userBO.getPassword());
}
將數據從數據庫對象轉換為業務對象:
private static Mono<UserBO> covertUserDAOToBUserBO(UserDAO userDAO){
return Mono.just(new UserBO(userDAO.getUserId(), userDAO.getName(),
userDAO.getMobileNumber(), userDAO.getEmailId(), userDAO.getPassword()));
}
現在異步服務(getAllUsers):
public Flux<UserBO> getAllUsers(){
return userRepository.findAll().flatMap(UserService::covertUserDAOToBUserBO);
}
由于 flatMap 是異步的,因此我們可以從異步操作中受益,甚至可以將對象從 DAO 轉換為 BO。
同樣,如果保存數據,那么我嘗試如下:
public Mono<UserBO> saveUser(UserBO userBO)
{
return
userRepository.save(covertUserBOToBUserDAO(userBO)).flatMap(UserService::covertUserDAOToBUserBO);
}
添加回答
舉報