将spring服务列表转换为另一个实体作为响应

时间:2018-02-28 15:47:27

标签: java spring spring-mvc arraylist

我有一个userService

entityDTO = (EntityDto) userService.getAllUsersOfCompany(companyId);

它将返回UserDTO

的列表

在此列表中实体有很多字段像(userId,name,address,place ..... etc)

但我只想要userIdname

为此我创建了一个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>

是否可以使用推土机映射???

2 个答案:

答案 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));