【问题标题】:How to unpack a list of nested DTO objects to list of different entities?如何将嵌套 DTO 对象列表解压缩为不同实体的列表?
【发布时间】:2020-08-21 13:22:33
【问题描述】:

我有一个 DTO 列表,我需要将此 DTO 映射到两个不同的实体对象列表。我是 Java 和 Springboot 的新手。我发现了两个 DTO 映射到一个实体对象的示例。 比如http://modelmapper.org/getting-started/

Person Entity -> id, name.

地址实体 -> 街道,州。

DTO:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import java.util.List;
import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class PersonDTO {

  private int id;

  private String name;

  @JsonInclude(Include.NON_NULL)
  private List<Address> address;
}

我需要将上面的 DTO 列表映射到下面的实体对象列表:

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Person {

  private int id;
  private String name;

}
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Address {

  private int Street;
  private String State;

}

如何将 PersonDTO 列表映射到 Person 列表和 Address 列表?

【问题讨论】:

  • 尽可能不要使用 Lombok。它以一种不太好的方式做好事。

标签: java spring spring-boot


【解决方案1】:

你可以使用org.modelmapper.TypeToken来映射List

List<Person> persons = modelmapper.map(personDTOs,new TypeToken<List<Person>>(){}.getType());

地址列表使用这个

List<Address> addresses = personDTOs.stream().map(PersonDTO::getAddress)
            .flatMap(Collection::stream).collect(Collectors.toList());

【讨论】:

  • 你试过这个解决方案了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 2019-12-25
  • 2017-07-18
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多