【问题标题】:Mapping of list elements of class with dozer xml mapping file使用推土机 xml 映射文件映射类的列表元素
【发布时间】:2016-06-15 07:27:38
【问题描述】:

有两个类,分别命名为 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>

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

【问题讨论】:

    标签: list class dozer


    【解决方案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>
    

    &lt;b-hint&gt;com.project.model.ClassB&lt;/b-hint&gt;

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2011-09-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多