使用dozer xml映射文件映射类的列表元素

时间:2016-06-15 07:27:38

标签: list class dozer

有两个名为Class1和Class2的类。 Class1有一个ClassA对象列表。 Class2有一个ClassB对象列表。

Class1如下: -

public class Class1
 {
  private String number_1;
   private List<ClassA> classA= new ArrayList<ClassA>();
  }
   //all getters and setters

ClassA就像: -

public class ClassA
{
  private string name_A;
  private int rollnum_A;
}
   //all getters and setters

Class2就像: -

public class Class1
 {
  private String number_1;
   private List<ClassB> classB= new ArrayList<ClassB>();
  }
   //all getters and setters

ClassB就像

public class ClassB
{
  private string name_B;
  private int rollnum_B;
}
   //all getters and setters

以下是我创建的推土机文件: -

<?xml version="1.0" encoding="UTF-8"?>
   <mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
      http://dozer.sourceforge.net/schema/beanmapping.xsd">


<mapping>
    <class-a>Class1</class-a>
    <class-b>Class2</class-b>

    <field>
    <a>number_1</a>
    <b>number_2</b>
    </field>

    <field>
    <a>name_A</a>
        <b>name_B</b>
        <a-hint>ClassA</a-hint>
        <b-hint>ClassB</b-hint>
    </field>

    <field>
    <a>rollnum_B</a>
        <b>rollnum_B</b>
        <a-hint>ClassA</a-hint>
        <b-hint>ClassB</b-hint>
    </field>


</mapping>
</mappings>

但它没有用..有没有其他方法来映射类对象列表。

1 个答案:

答案 0 :(得分:1)

映射文件的正确定义如下

<mappings>
<mapping type="bi-directional">
    <class-a>Class1</class-a>
    <class-b>Class2</class-b>
    <field>
        <a>classA</a>
        <b>classB</b>
        <a-hint>ClassA</a-hint>
        <b-hint>ClassB</b-hint>
    </field>
</mapping>
<mapping type="bi-directional">
    <class-a>ClassA</class-a>
    <class-b>ClassB</class-b>
    <field>
        <a>name_A</a>
        <b>name_B</b>
    </field>
    <field>
        <a>rollnum_A</a>
        <b>rollnum_B</b>
    </field>
</mapping>

在a-hint中,b-hint,class-a和class-b标签必须放置类示例的位置:

<class-a>com.project.model.Class1</class-a>
<class-b>com.project.model.Class2</class-b>

<a-hint>com.project.model.ClassA</a-hint>

<b-hint>com.project.model.ClassB</b-hint>

仅当数据类型不同时才声明a-hint和b-hint。

原始类型变量可以保留而不进行映射,但前提是它们在每个类中具有相同的名称。在你的情况下,它被映射,因为它们有不同的名称。