簡體   English   中英

使用 Mapstruct 映射 DTO

[英]Mapping DTO using Mapstruct

我是Mapstruct ,在特定用例中遇到問題

所以,如果我的源屬性有 hotmail.com 我的目標屬性應該收到“個人”,如果我的來源有 facebook.com 我的目標應該收到“公司”。

我試圖使用表達,但無法繞過它。 我該怎么做?

@Mapping(source = "user.email", target = "emailType")
 NewDTO myMapperMethod(MyRequest req);

您可以使用qualifiedByNamedefault接口方法來限定和定義給定屬性的合適映射方法:

@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";
        }
    }
}

這不是 MapStruct 應該為您解決的問題。 它正在根據內容做出運行時決策。 通常是業務問題,而不是映射問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM