在网上我发现很多例子,其中一个源对象的字段使用Orika Mapping框架映射到目标对象,如下所示。
mapperFactory.classMap(BasicPerson.class, BasicPersonDto.class)
.field("name", "fullName")
.field("age", "currentAge")
.register();
但我的要求与传统的映射不同。我得到两个源对象和一个目标对象。我需要将第一个源对象中的一些字段和第二个源对象中的一些字段映射到目标对象。
请发布您对此方案的建议。
答案 0 :(得分:4)
BoundMapperFacade
有map(A source, B target)
方法,可让您从source
映射到target
的现有实例。这样,您就可以将两个不同的源对象映射到同一个目标对象上。
示例代码:
class SourceA {
String fieldASource;
}
class SourceB {
String fieldBSource;
}
class Target {
String fieldATarget;
String fieldBTarget;
}
public Target mapToTarget() {
mapperFactory.classMap(SourceA.class, Target.class).field("fieldASource", "fieldATarget").register();
mapperFactory.classMap(SourceB.class, Target.class).field("fieldBSource", "fieldBTarget").register();
Target target = new Target();
SourceA sourceA = new SourceA();
SourceB sourceB = new SourceB();
mapperFactory.getMapperFacade(SourceA.class, Target.class).map(sourceA, target);
mapperFactory.getMapperFacade(SourceB.class, Target.class).map(sourceB, target);
return target;
}
target
将从fieldATarget
对象填充sourceA
字段,从fieldBTarget
对象填充sourceB
。