gpt4 book ai didi

java - 在 "to"参数中使用多个属性时 XML 中的 JMapper 配置问题

转载 作者:行者123 更新时间:2023-12-01 13:55:47 25 4
gpt4 key购买 nike

我正在尝试使用 JMapper 从 StaticS 映射到 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>

类(class)如下:

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() {}
}

我调用映射器框架来映射这两个文件的方式是:

Map<String, String> map = new HashMap<>();
map.put("id", "JMapper Framework v.1.2.0");
map.put("endDate", "22/08/1988");
map.put("startDate", "22/08/1987");
map.put("securityName", "IBM");

// ANNOTATION
JMapper<StaticD, StaticS> mapper = new JMapper<StaticD, StaticS>(StaticD.class, StaticS.class, "staticConversion.xml");
StaticD destination = mapper.getDestination(new StaticS(map));
System.out.println(destination);

实际输出如下:

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 属性。

如果我对每个属性使用单独的转换,则它可以工作,但是,当我对两个不同的属性使用相同的转换时,映射不起作用。

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

<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>

您能否建议一下,如果我在 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 - 在 "to"参数中使用多个属性时 XML 中的 JMapper 配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19638671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com