代码之家  ›  专栏  ›  技术社区  ›  Dominik Baranec Filip

如何使用mapstruct映射到列表

  •  0
  • Dominik Baranec Filip  · 技术社区  · 7 年前

    嗨,我需要mappig变量来请求。如何映射到列表中。 我的请求看起来像。

    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 回复  |  直到 7 年前
        1
  •  1
  •   Dominik Baranec Filip    7 年前

    据我所知,你想把你的值映射到一个单例列表中。您可以通过在映射器中提供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);
    }