繁体   English   中英

如何使用推土机将简单的ArrayList映射到VO

[英]How to map a simple ArrayList to a VO using Dozer

我正在使用推土机转换我的对象。 但是我在映射一个简单的列表时遇到了问题...我从Hibernate检索一个ResultSet作为Object List ,我想将其映射到我的复杂类型对象。

所以,我的来源就像:

List < Object > list = new ArrayList< Object > ();
list.add("Name");
list.add("Address");

我的价值对象是:

public class MyClass 
{ 
    public String name; 
    public String address; 
}

我只想映射list[0] ==> MyClass.namelist[1] ==> MyClass.address属性,但是我不知道如何...

谢谢你的帮助 !

由于某种原因,推土机支持此操作(理想情况):

<mapping>
    <class-a>MyClass</class-a>
    <class-b>java.util.List</class-b>       
    <field>          
        <a is-accessible="true">name</a>
        <b>this[0]</b>
    </field>        
</mapping>

它只会映射以name List的整个字符串表示形式,因此您的name属性将以[Name,Address]值结尾。

最好的选择是将List放在一个holder类中,并像这样映射它:

<mapping>
    <class-a>MyClass</class-a>
    <class-b>MyHolder</class-b>     
    <field>          
        <a is-accessible="true">name</a>
        <b>holded[0]</b>
    </field>
    <field>          
        <a is-accessible="true">address</a>
        <b>holded[1]</b>
    </field>    
</mapping>

MyHolder类仅在holded字段中包含List实例,并使用getter方法提供对其的访问。

在该字段中,必须使用is-accessible="true"映射,因为MyClass属性是public并且没有访问器。 我建议您将这些属性设为private并创建访问器方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM