我有一个userService
entityDTO = (EntityDto) userService.getAllUsersOfCompany(companyId);
它将返回UserDTO
在此列表中实体有很多字段像(userId,name,address,place ..... etc)
但我只想要userId
和name
。
为此我创建了一个EntityDto
public class EntityDto {
private String Id;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
}
现在我需要将List<EntityDto>
映射到List<UserDTO>
。
是否可以使用推土机映射???
答案 0 :(得分:2)
如果您使用的是JAVA8或+,则可以使用 stream :
List<EntityDto> users = new ArrayList<>();
userService.getAllUsersOfCompany(companyId).stream().forEach(
entity -> {
users.add(new EntityDto(entity.getId(), entity.getName()))
});
答案 1 :(得分:2)
for Java 8遵循@TouzeneMohamedWassim的建议 但是对于java&lt; 8,他们的api中没有流和地图
所以你应该使用传统的循环方法(比如创建一个循环抛出你的列表并返回新实体的方法),如下所示:
private static List<EntityDto> convertEntityDto(List<UserDTO> users) {
List<EntityDto> newList = new ArrayList<>();
for (UserDTO usr : users) {
EntityDto entity = new EntityDto();
entity.setId(usr.getId());
entity.setName(usr.getName());
newList.add(entity);
}
return newList;
}
然后调用你的方法:
List<EntityDto> listEntityDTO =
convertEntityDto(serService.getAllUsersOfCompany(companyId));