Java中POJO的映射器

时间:2016-05-24 09:18:06

标签: java reflection mapping dozer

我正在编写一个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)。

1 个答案:

答案 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);