【发布时间】:2016-03-07 19:44:48
【问题描述】:
我需要用 Orika 替换 Dozer 映射,我想知道是否可以在 Orika 中执行 mapper.map(obj1, obj2) 的 Dozer 东西?到目前为止,我已经看到,对于目的地,您只能指定类类型而不是对象,所以我假设每次都会创建一个新实例。但在这种情况下,我只需要使用 DTO 的某些字段更新先前找到的实体对象。这可能吗?
【问题讨论】:
我需要用 Orika 替换 Dozer 映射,我想知道是否可以在 Orika 中执行 mapper.map(obj1, obj2) 的 Dozer 东西?到目前为止,我已经看到,对于目的地,您只能指定类类型而不是对象,所以我假设每次都会创建一个新实例。但在这种情况下,我只需要使用 DTO 的某些字段更新先前找到的实体对象。这可能吗?
【问题讨论】:
是的,可以将源对象 A 映射到目标类 B - 然后 Orika 将自行实例化 B - 或映射到已创建的 B 实例。
// Let Orika create instance of B
A source = new A();
BoundMapperFacade<A, B> mapper = mapperFactory.getMapperFacade(A.class, B.class);
B target = mapper.map(source);
// Create instance of B yourself and let Orika fill it
A source = new A();
B target = new B();
BoundMapperFacade<A, B> mapper = mapperFactory.getMapperFacade(A.class, B.class);
mapper.map(source, target);
在第二种情况下,您可以通过某种方式自己设置 target 实例 - Orika 只会将属性从 A 映射到您在 ClassMap 中定义的 B。
【讨论】: