【问题标题】:How to map 2 objects using MapStruct in a Spring Boot app?如何在 Spring Boot 应用程序中使用 MapStruct 映射 2 个对象?
【发布时间】:2021-02-24 16:07:37
【问题描述】:

我有一个 Spring Boot 项目,我正在使用 mapstruct 来映射 2 个对象。 我有这个结构之王,这是第一个对象:

ObjectA {
List<ObjectB> objectsB;
}

ObjectB {
String prId;
List<String> dtId;
}

---

第二个对象:

ObjectC {
List<ObjectD> objectsD;
}

ObjectD {
ObjectE objectE;
List<ObjectE> objectsE;
}

ObjectE {
String nmId;
}

现在使用 mapstruct 我需要这样做:

@Mapper(componentModel = "spring")
public interface AppMapper {
    @Mappings({
            @Mapping(target = "objectC.objectsD.objectE.nmId", source = "objectA.objectsB.prId"),
            @Mapping(target = "objectC.objectsD.objectsE.nmId", source = "objectA.objectsB.dtId")
    })
    ObjectC objectAToObjectC(ObjectA objectA);
}

我该怎么做?任何反馈将不胜感激!谢谢!

【问题讨论】:

  • 请向我们展示您对所面临问题的发现。您可以使用@AfterMapping 创建自定义映射到地图列表

标签: java spring spring-boot mapping mapstruct


【解决方案1】:

您必须添加自定义映射方法以将嵌套的 objectB 映射到 objectD 并将任何字符串映射到 ObjectE。

这应该适用于你给出的例子:

@Mapper
public interface AppMapper
{
    @Mapping(source = "objectsB", target = "objectsD")
    ObjectC objectAToObjectC(ObjectA objectA);

    @Mapping(source = "prId", target = "objectE.nmId")
    @Mapping(source = "dtId", target = "objectsE")
    ObjectD objectBtoObjectD(ObjectB objectB);

}

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2019-01-04
    • 2021-11-19
    • 2016-03-11
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多