0

如何从两个不同的领域进行映射?如果存在,我需要将 b.url 设置为 axyzurl,否则设置为 aklmurl:

b.url = 存在(axyzurl)?axyzurl:存在(aklmurl)?aklmurl : 默认值

表达式可能会有所帮助,但如果我检查所有嵌套字段是否为空,它将是很长的表达式,例如 "a != null && a.getX() != null && a.getX().getY() != null && a. getX().getY().getZ() != null && a.getX().getY().getZ().getURL() != null ? a.getX().getY().getZ()。获取网址():...”

谢谢,帕维尔

4

1 回答 1

0

您可以使用 MapStruct@AfterMapping来访问映射对象。

@AfterMapping
protected void mapUrl(B b, @MappingTarget A a) {
    //You will do your logic here
}

从理论上讲,您可以通过将 Mapper 声明为抽象类并定义getUrl(A a)方法来通过表达式来实现。他们在你的表情中你可以调用getUrl(a)

我建议使用@AfterMapping,因为它更干净(在我看来)

于 2017-02-10T18:55:06.800 回答