Java 在“中使用多个属性时XML中的JMapper配置问题”;至;论点

Java 在“中使用多个属性时XML中的JMapper配置问题”;至;论点,java,mapping,Java,Mapping,我正在尝试使用JMapper将静态映射到StaticD类。以下是配置 <jmapper> <class name="com.StaticD"> <global> <value name="map"/> </global> </class> <class name="com.StaticS"> <conversion name="toDate" from="m

我正在尝试使用JMapper将静态映射到StaticD类。以下是配置

<jmapper>
  <class name="com.StaticD">
    <global>
       <value name="map"/>
    </global>
  </class>
  <class name="com.StaticS">
    <conversion name="toDate" from="map" to="startDate, endDate">
        return new java.text.SimpleDateFormat("dd/MM/yyyy").parse((String)${source}.get("${destination.name}"));
    </conversion>
    <conversion name="toString" from="map" to="securityName, id">
        return (${destination.type}) ${source}.get("${destination.name}");
    </conversion>
  </class>
</jmapper>
预期产出如下:

public class StaticS {

    private Map<String, String> map;

    public Map<String, String> getMap()
    {
        return map;
    }

    public StaticS(Map<String, String> map) {
        super();
        this.map = map;
    }
}


public class StaticD {

    private Date startDate;

    private Date endDate;

    private String id;

    private String securityName;

    public Date getStartDate() {
        return startDate;
    }
    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }
    public Date getEndDate() {
        return endDate;
    }
    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }
    public String getId()
    {
        return id;
    }
    public void setId(String id)
    {
        this.id = id;
    }
    public String getSecurityName() {
        return securityName;
    }
    public void setSecurityName(String securityName) {
        this.securityName = securityName;
    }
    public StaticD() {}
}
StaticD{id=JMapper Framework v.1.2.0, startDate=Sat Aug 22 00:00:00 CDT 1987, endDate=Sat Aug 22 00:00:00 CDT 1987, securityName=JMapper Framework v.1.2.0}
StaticD{id=JMapper Framework v.1.2.0, startDate=Sat Aug 22 00:00:00 CDT 1987, endDate=Sat Aug 22 00:00:00 CDT 1988, securityName=IBM}
正如您所看到的,startDate将在实际输出的StaticD类中同时包含start和endDate属性

如果我对每个属性使用单独的转换,那么它是有效的,但是,当我对两个不同的属性使用相同的转换时,映射不起作用

例如,以下代码可以工作,但代码是冗余的


返回(${destination.type})${source}.get(“${destination.name}”);
返回(${destination.type})${source}.get(“${destination.name}”);
如果我在to参数中使用了多个属性,您能解释一下为什么上面提到的映射这两个类的配置不起作用吗?

在进行转换时,我必须在xml文件中指定type=“DYNAMIC”

<conversion name="toDate" from="map" to="startDate, endDate" type="DYNAMIC">
        return new java.text.SimpleDateFormat("dd/MM/yyyy").parse((String)${source}.get("${destination.name}"));
    </conversion> 

返回新的java.text.simpleDataFormat(“dd/MM/yyyy”).parse((String)${source}.get(${destination.name}”);
<conversion name="toString" from="map" to="securityName">
            return (${destination.type}) ${source}.get("${destination.name}");
        </conversion>
<conversion name="toString" from="map" to="id">
            return (${destination.type}) ${source}.get("${destination.name}");
        </conversion>
<conversion name="toDate" from="map" to="startDate, endDate" type="DYNAMIC">
        return new java.text.SimpleDateFormat("dd/MM/yyyy").parse((String)${source}.get("${destination.name}"));
    </conversion>