首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Spring Boot应用程序中使用MapStruct映射2个对象?

如何在Spring Boot应用程序中使用MapStruct映射2个对象?
EN

Stack Overflow用户
提问于 2020-11-13 00:11:57
回答 1查看 52关注 0票数 0

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

代码语言:javascript
运行
复制
ObjectA {
List<ObjectB> objectsB;
}

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

---

第二个对象:

代码语言:javascript
运行
复制
ObjectC {
List<ObjectD> objectsD;
}

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

ObjectE {
String nmId;
}

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

代码语言:javascript
运行
复制
@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);
}

我该怎么做呢?任何反馈都将被删除!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-11-13 14:07:08

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

举个例子,这对你应该是有效的:

代码语言:javascript
运行
复制
@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);

}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64807539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档