簡體   English   中英

如何為 Mapstruct 指定默認映射方法

[英]How to specify default mapping method for Mapstruct

我有簡單的 object 客戶端

public class Client {
    String externalCode;
    String name;
    String surname;
}

我想將 map 與幾乎相同的 object

public class User {
    String internalCode;
    String name;
    String surname;
}

看,我希望將 externalCode 映射到 internalCode。 我有一個方法可以做到這一點。 我用我的自定義 @CodeMapping 注釋標記了我的方法,並將該注釋放入qualifiedBy 參數。 所以,這是我的映射器。

@Mapper()
ClientMapper {
     @CodeMapping
     String toInternalCode(String externalCode) {
          return externalCode + " internal part";
     }

    @Mapping(target = "internalCode", source = "externalCode", qualifiedBy = CodeMapping.class)
    User toUser(Client client);
}

問題是 name 和 surname 字段也使用 toInternalCode 方法映射。 Mapstruct 看到我定義了一個方法,它將 String 映射到 String 並認為它應該在所有情況下都使用。

有沒有辦法告訴 Mapstruct,如果沒有指定限定符,應該使用直接映射? 或者制作我自己的方法,它接受字符串並返回它並告訴 Mapstruct 它應該默認使用該方法?

很可能所有方法都使用了toInternalCode ,因為@CodeMapping注釋沒有使用@Qualifier進行元注釋(來自org.mapstruct.Qualifier )。

@CodeMapping應按以下方式定義:

import org.mapstruct.Qualifier;

@Qualifier
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface CodeMapping {
}

暫無
暫無

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

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