首页 > 解决方案 > 映射嵌套 bean 列表:“org.mapstruct.Mapping”

问题描述

我想将Abc类映射到AbcDTO使用“org.mapstruct.Mapping”

class Abc {
    private List<Xyz> xyz = null;
    private String uvw;
    private String cde;
}

class AbcDTO{
    private List<XyzDTO> xyz = null;
    private String uvw;
    private String cde;
}

class Xyz{
    private String type;
    private String value;
    private String docId;
}

class  XyzDTO{
    private String type;
    private String value;
    private DocDTO document;
}

我尝试使用注释映射类:

    @Mappings({
            @Mapping(source = "xyz.docId", target = "xyz.doc")
    })
 abcDTO abcToabcDTO(abc abc)

有人可以帮助我如何遍历嵌套的bean并将其映射docIddoc? 如果名称相同,它们会自动映射但我想从映射docIddoc

标签: javaspringspring-bootmappingmapstruct

解决方案


当你想要地图列表时,你可以定义它:

@Mapping(source="docId", target="doc")
XyzDTO xyzToXyzDTO(XyZ xyz);

@Mapping(source="xyz", target="xyz") //useless if two lists got same name, but good for comprehention
AbcDTO abcToAbcDTA(Abc abc);

推荐阅读