我正在使用streams API基于userid对user对象执行更新操作。下面是我写的代码。有没有更好的方法来重构代码,因为我需要再次获取更新后的用户并发送。
public User updateUser(int userId, User user){
System.out.println("User id is "+ userId);
this.userRepository
.fetchUserByUserId(userId)
.map(u -> {
u.setUserId(user.getUserId());
u.setUsername(user.getUsername());
u.setEmailAddress(user.getEmailAddress());
return u;
});
return this.userRepository.fetchUserByUserId(userId).get();
}
发布于 2021-09-24 04:06:51
我看不出有任何理由要再取一次
您可以将用户映射到更新的用户并返回新的用户。
public User updateUser(int userId, User user){
System.out.println(String.format("UserId is %s",userId));
return this.userRepository
.fetchUserByUserId(userId)
.map(u -> this.mergeUsers(u,user));
}
public User mergeUsers(Optional<User> dbUser, User newUser){
if(dbUser.isPresent())
return user.builder()
.emailAddress(newUser.getEmailAddress())
.username(newUser.getUsername()).build();
else
// Do something else.
}
// Setting Id is irrelevant cause it is same value.. youre fetching by this value.
https://stackoverflow.com/questions/69314165
复制