使用 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.