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);
}
添加回答
举报