我正在编写一个mapper来映射java中2个不同POJO的字段。我使用Dozer映射器进行简单映射,但在这种情况下,在将值设置为目标对象时,我有一个稍微复杂的策略。 getter很简单,但是直接设置它,我想对值进行一些处理。
我的问题是,我可以使用推土机映射器吗? 如果它不可能,是否可以(从性能的角度来看)使用反射来实现我自己的映射器(这是因为我已经在xml文件中定义了映射而不想在mapper类中对其进行硬编码)?
<mapping>
<field>
<!-- source -->
<field-a name="cat">
<!-- destination -->
<field-b" name="dog">
</field>
</mapping>
与此xml相关,我想要以下内容:
Source c;
Destination d;
d.setDog(someProcessing(c.getPsMessage()));
在获取值之后以及将其设置为目标对象之前,请记下额外处理(someProcessing
)。
答案 0 :(得分:3)
您可以设置own getters
-setters
methods with Dozer。您甚至可以映射具有不同类型和名称的属性!:
示例:
<field>
<a>yourField</a>
<b set-method="nameOfYourFieldSetter(java.lang.String)">
nameOfYourFieldInOtherClass
</b>
</field>
在获取值之后以及将其设置为目标对象之前,请记下额外处理(someProcessing)。
你过度复杂,使用KISS原则:
Source c;
Destination d;
// String, Integer or what someProcessing returns!
String name = someProcessing(c.getPsMessage());
d.setDog(name);