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

问题描述 投票:0回答:2

我有一个userService

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

它将返回UserDTO列表

在此列表中实体有很多字段Like(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>

推土机映射有可能吗???

java spring spring-mvc arraylist
2个回答
2
投票

对于Java 8,按照@TouzeneMohamedWassim的建议,但对于java <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));

2
投票

如果您使用的是JAVA8或+,则可以像这样使用流:

List<EntityDto> users = new ArrayList<>();
userService.getAllUsersOfCompany(companyId).stream().forEach(
entity -> {
   users.add(new EntityDto(entity.getId(), entity.getName()))
});
© www.soinside.com 2019 - 2024. All rights reserved.