我想在
UserServiceImpl
中的一种方法中使用集合来返回将由 UserDTO
参数化的所有用户的列表。
我有以下方法:
@Override
public List<UserEntity> getUsers() {
var usersList = userRepository.findAll();
return usersList;
}
但我想将其更改为
public List<UserDTO> getUsers()...
我有从实体到dto的map
方法,反之亦然:
public UserDTO mapToUserDTO(UserEntity userEntity) {
var userDto = new UserDTO();
var rolesEntity = userEntity.getRoles().stream()
.map(RoleEntity::getId)
.map(String::valueOf)
.collect(Collectors.toList());
userDto.setId(userEntity.getId());
userDto.setUsername(userEntity.getUsername());
userDto.setName(userEntity.getName());
userDto.setSurname(userEntity.getSurname());
userDto.setEmail(userEntity.getEmail());
userDto.setAge(userEntity.getAge());
userDto.setRoles(rolesEntity);
return userDto;
}
但在这种情况下就不能应用了。 您能帮我一下吗 - 如何在我的方法中将参数化类型从
UserEntity
更改为 UserDTO
?
在用户实体列表上创建一个流,通过
map()
操作和您共享的方法将每个实体转换为 DTO,并将结果收集到列表中。
public List<UserDTO> getUsers() {
return userRepository.findAll().stream()
.map(this::mapToUserDTO) // or ClassName::mapToUserDTO
.collect(Collectors.toList()); // or .toList() for Java 16+
}