我有一个关于Dozer Bean Mapping的问题。我有以下xml配置部分(我不明白其中的一些事实):
<mapping>
<class-a>
entity.template.TemplateEntity
</class-a>
<class-b>dto.template.TemplateDto
</class-b>
<field>
<a set-method="setLang" get-method="getLang">lang</a>
<b set-method="setLang" get-method="getLang">lang</b>
<a-hint>entity.template.TemplateLanguageEntity</a-hint>
<b-hint>dto.template.TemplateLanguageDto</b-hint>
</field>
</mapping>
“set-method =”setLang“get-method =”getLang“”的具体含义是什么?
Dozer Bean Mapper在这部分做了什么?没有其他配置,它描述了如何映射两个集合?
<a-hint>entity.template.TemplateLanguageEntity</a-hint>
<b-hint>dto.template.TemplateLanguageDto</b-hint>
Dozer Mapper是否自动映射所有字段,如果没有设置配置,它们是否由它们建立?
感谢您的帮助!
格尔茨 Marwief
答案 0 :(得分:0)
可能具有非正统getter和setter方法的Bean,Dozer支持用户指定的setter和getter方法。在这种情况下进行双向映射,请查看下面的示例。
元素A中的源字段使用属性指定自定义setter方法和getter方法。
<field>
<a set-method="placeValue" get-method="buildValue">value</a>
<b>value</b>
</field>
了解Custom set() and get() methods dozer documentation。
让我们看一下如果我们通过调用addIntegerToList()方法将String映射到ArrayList。 请注意,这被定义为单向字段类型,因为我们无法将ArrayList映射到String。
<!-- we can not map a ArrayList to a String,
hence the one-way mapping -->
<field type="one-way">
<a>integerStr</a>
<b set-method="addIntegerToList">integerList</b>
</field>
是的,Dozer Mapper会自动将所有字段从A类映射到B类iff both the field names are same.