【发布时间】:2016-04-06 05:34:42
【问题描述】:
我想使用MapStruct 将一个bean 类的字段映射到一个类字典类。我的源类是标准 bean(简化示例):
public class Bean {
private String a;
private String b;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}
现在我想将这些字段映射到类似 Map 的容器中:
public class Dict {
public enum Tag {
A,
B
}
private Map<Tag, String> dict = new HashMap<>();
public String getEntry(Tag tag) {
return dict.get(tag);
}
public void setEntry(Tag tag, String s) {
dict.put(tag, s);
}
}
换句话说,我希望MapStruct 生成以下内容:
target.setEntry(Dict.Tag.A, source.getA());
target.setEntry(Dict.Tag.B, source.getB());
我在 MapStruct documentation 中找不到类似的东西。获取映射源(嵌套源、表达式)有很大的灵活性,但对于目标,我只能看到 target = "propertyname" 表示法,这并没有太多的灵活性空间。
映射到java.util.Map 的最佳解决方案是什么?
【问题讨论】:
-
用 JMapper 很容易实现这个映射,但是超出了这个线程的范围,如果你有兴趣打开一个带有明确 JMapper 请求的新问题或github 上的问题
-
@Alessandro 上次我们查看 JMapper 时,它使用字节码增强来进行映射。我喜欢 MapStruct 的地方在于它可以生成快速且易于调试的代码。
标签: java object-object-mapping mapstruct