是否可以使用Orika Mapper将两个源对象中的字段映射到目标对象?

时间:2016-06-30 09:02:36

标签: java orika

在网上我发现很多例子,其中一个源对象的字段使用Orika Mapping框架映射到目标对象,如下所示。

mapperFactory.classMap(BasicPerson.class, BasicPersonDto.class)
            .field("name", "fullName")
            .field("age", "currentAge")
            .register();

但我的要求与传统的映射不同。我得到两个源对象和一个目标对象。我需要将第一个源对象中的一些字段和第二个源对象中的一些字段映射到目标对象。

请发布您对此方案的建议。

1 个答案:

答案 0 :(得分:4)

BoundMapperFacademap(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