【发布时间】:2019-07-03 18:34:36
【问题描述】:
我的模型类中有几个 Boolean 字段(来源)。我的 DTO 类中的目标字段是 String。我需要将true 映射为Y,将false 映射为N。有超过 20 个 Boolean 字段,现在我正在使用 20+ @Mapping 注释和 expression 选项,这是开销。必须有一个我不知道的简单方法或解决方案。谁能帮忙简化一下?
我正在使用mapstruct 版本1.2.0.Final
Source.java
class Source{
private Boolean isNew;
private Boolean anyRestriction;
// several Boolean fields
}
Target.java
class Target{
private String isNew;
private String anyRestriction;
}
Helper.java
class Helper{
public String asString(Boolean b){
return b==null ? "N" : (b ? "Y" : "N");
}
}
MyMapper.java
@Mapper interface MyMapper{
@Mappings(
@Mapping(target="isNew", expression="java(Helper.asString(s.isNew()))"
// 20+ mapping like above, any simple way ?
)
Target map(Source s);
}
【问题讨论】:
-
谢谢你,正是我需要的。只是想指出您的表达式需要完全限定的包名称。
标签: java string boolean mapping mapstruct