我是Mapstruct
的新手,在特定用例中遇到了问题
因此,如果我的来源属性具有hotmail.com,则我的目标属性应收到“个人”,如果我的来源属性具有facebook.com,则我的目标应获得“公司”。
我试图使用表达式,但无法解决。 我该怎么办?
@Mapping(source = "user.email", target = "emailType")
NewDTO myMapperMethod(MyRequest req);
答案 0 :(得分:1)
您可以使用qualifiedByName
和default
接口方法来限定和定义给定属性的适当映射方法:
@Mapper(componentModel = "spring")
public interface RequestMapper {
@Mapping(source = "user.email", target = "emailType", qualifiedByName = "EmailToType")
NewDTO myMapperMethod(MyRequest req);
@Named("EmailToType")
default String emailTypeResolver(String email) {
if ("hotmail.com".equals(email)) {
return "personal";
} else if ("facebook.com".equals(email)) {
return "corporate";
} else {
return "unknown";
}
}
}
答案 1 :(得分:0)
MapStruct不能为您解决。它正在根据内容做出运行时决策。通常是业务问题,而不是映射问题