使用 Java 流更新实体 API
Updating entity using Java Streams API
我正在使用流 API 基于用户 ID 对用户对象执行更新操作。下面是我写的代码。
有没有更好的方法来重构代码,因为我需要再次获取更新的用户并发送。
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();
}
我看不出有任何理由再次获取
您可以将用户映射到更新后的用户和 return 新用户。
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.
我正在使用流 API 基于用户 ID 对用户对象执行更新操作。下面是我写的代码。 有没有更好的方法来重构代码,因为我需要再次获取更新的用户并发送。
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();
}
我看不出有任何理由再次获取
您可以将用户映射到更新后的用户和 return 新用户。
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.