java - 映射嵌套列表

标签 java mapstruct

我有一个带有嵌套对象列表的对象

@Getter
@Setter
@NoArgsConstructor
public class Notification {
    private Long id
    private Long statusId;
    private List <External> external;
}


@Getter
@Setter
@NoArgsConstructor
public class External{
    private Long externalId;
    private  LocalDate date;
}

D至

@Getter
@Setter
@NoArgsConstructor
public class NotificationPayload {
    private Long id;
    private Long statusId;
    private List <ExternalReferencePayload> external;
}


@Getter
@Setter
@NoArgsConstructor
public class ExternalReferencePayload {
    private Long externalReferenceId;
}

映射器

@Mapper(componentModel = "spring")
public interface NotificationMapper{

  public Notification dtoToNotification(NotificationPayload  payload);
}

我搜索映射嵌套列表的方法

最佳答案

为了对某些元素执行自定义映射,只需要定义一个映射方法,MapStruct 将处理其余的事情。在您的示例中:

@Mapper(componentModel = "spring")
public interface NotificationMapper{

  public Notification dtoToNotification(NotificationPayload  payload);

  @Mapping(target = "externalId", source = "externalReferenceId")
  public External dtoExternal(ExternalReferencePayload payload);
}

这样,嵌套列表将使用 dtoExternal 映射方法来执行映射。使用 @Mapping,您可以控制 externalIdexternalReferenceId 之间的映射方式

关于java - 映射嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62049980/

相关文章:

java - MapStruct:如何跳过复制特定属性(该属性位于集合内且集合位于主实体内)

java - MapStruct:Object.class 到 Custom.class 映射

java - 如何使用 mapstruct 将枚举转换为 POJO?

java - 使用 mapstruct 映射带有参数的集合

java - 如何在屏幕旋转时保存 ArrayList<Uri>?

java - 如何创建一次只能处理一项任务的客户端池

java - <identifier> 预期的编译错误

java - Mapstruct:自动递增对象列表中的对象变量

java - 如何在Java中使用非标准变量名来生成XML标签?

java - 从java服务器发送整数或字符串