【发布时间】:2018-05-21 12:39:23
【问题描述】:
我遇到过这样一种情况,我的映射方法有 3 个参数,而这三个参数都用于派生目标类型的属性之一。
我在接口中创建了一个默认映射方法,保留了派生属性的逻辑,现在为了调用这个方法,我可以在@Mapping 注释中使用expression = "java( /*method call here*/ )"。
有没有办法用任何 mapstruct 注释来做到这一点,比如@qualifiedByName,我尝试评论具有表达式属性的注释并使用了qualifiedByName,但它不起作用:
@Mapper
public interface OneMapper {
@Mapping(target="id", source="one.id")
//@Mapping(target="qualified",expression = "java( checkQualified (one, projId, code) )")
@Mapping(target="qualified",qualifiedByName="checkQualifiedNamed")
OneDto createOne (One one, Integer projId, Integer val, String code);
@Named("checkQualifiedNamed")
default Boolean checkQualified (One one, Integer projId, Integer val, String code) {
if(one.getProjectId() == projId && one.getVal() == val && one.getCode().equalsIgnoreCase(code)) {
return Boolean.TRUE;
}
return Boolean.FALSE;
}
}
【问题讨论】:
标签: java intellij-idea java-8 mapstruct