如何映射到List<>与mapstruct

时间:2017-11-23 09:19:02

标签: java spring mapping mapstruct

嗨我需要mappig变量来请求。我怎样才能进入List。 我的请求看起来像。

public class Request {
    private String Id;
    private List<Data> applicationData;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Data {
        private String data1;
        private String data2;
        private String data3;
    }
}

和我的映射器

@Mapper(componentModel = "spring")
public abstract class RequestMapper {
    @Mapping(target = "Id", source = "data.Id")
    @Mapping(target = "data.???.data1", source = "data.data1")
    @Mapping(target = "data.???.data2", source = "data.data2")
    @Mapping(target = "applicationData.???.data3", source = "data.data3")
    public abstract Request map(Data variables);
}

1 个答案:

答案 0 :(得分:1)

根据我的理解,您希望将值映射到单个列表中。您可以通过在映射器中提供2个新方法来实现这一目的。

你的映射器看起来像:

@Mapper(componentModel = "spring")
public abstract class RequestMapper {
    @Mapping(target = "Id", source = "Id")
    @Mapping(target = "data", source = "variables")        
    public abstract Request map(Data variables);

    protected List<Data> mapToList(Data variables) {
        return variables == null ? null : mapToApplication(variables);
    }

    //Add mappings if they are needed
    protected abstract ApplicationData mapToApplication(Data variables);
}