MainObject
{
String key;
List<ChildObject> children;
}
ChildObject{
String childVar1;
String childVar2;
}
List<TargetObj> targetObjects;
TargetObj{
String key;
String var1;
String var2;
}
您可以尝试将@beforemapping
或@aftermapping
与@context
结合使用。
您的映射器可以如下所示:
@Mapper
public interface MyMapper {
default List<TargetObj> map(MainObject source) {
if (source == null) {
return Collections.emptyList(); // or null or whatever you prefer
}
return map(source.getChildren(), new CustomContext(source));
}
List<TargetObject> map(List<ChildObject> children, @Context CustomContext context);
@Mapping(target = "key", ignore = true) // key is mapped in the context
TargetObject map(ChildObject child, @Context CustomContext context);
}
自定义上下文如下所示:
public class CustomContext {
protected final MainObject mainObject;
public CustomContext(MainObject mainObject) {
this.mainObject = mainObject;
}
@AfterMapping // of @BeforeMapping
public void afterChild(@MappingTarget ChildObject child) {
child.setKey(mainObject.getKey());
// More complex mappings if needed
}
}
假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?
假设我有以下课程:
给定: 我想把所有的车都标出来。将轮胎分为单独的轮胎板。我知道我可以做一个
当遍历ACROD时,有一个列表,并希望将该列表中的第一个对象映射到我的域对象。 @mapping(source=“insurancesvcrqs[0].policyquoteinqrqsaddrqsandpolicyquoteinqrqs[0].productues[0].generalpartyinfo.nameinfos[0].commlname.commericalname”,target=
我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?
下面是我的DTO。 源DTO 目标DTO