gpt4 book ai didi

java - 如何使用modelMapper转换嵌套类

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:05:01 25 4
gpt4 key购买 nike

我有一个简单的类,我想使用 modelMapper 将其映射到 DTO 类。

class Source {

private String name;
private String address;
List<Thing> things;

// getters and setters follows
}

class Thing {

private String thingCode;
private String thingDescription;

// getters and setters
}

我想将它们转换为包含 ThingDTO 列表的 sourceDTO,例如

class sourceDTO {

private String name;
private String address;
List<ThingDTO> things;

// getters and setters.
}

class ThingDTO {

private String thingCode;
private String thingDescription;

// getters and setters
}

如果我删除 Things 列表和 ThingsDTO 列表,那么使用 modelmapper 会很愉快,

 modelMapper.map(source, SourceDTO.class);

但我不知道如何让映射器将事物列表转换为 ThingDTO 列表。从文档中,我认为我需要创建一个扩展 PropertyMap 的映射器类,但我不知道如何配置它。

欢迎任何指向相关文档的指针

最佳答案

我认为如果您将 ModelMapper 配置为 LOOSE 或 STANDARD,它会为您完成。

modelMapper = new ModelMapper();
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);

否则你接下来可以尝试:

  1. 您可以像这样创建一个转换器:

    public class ListThingToThingDTOConverter implements Converter<List<Thing>, List<ThingDTO>> {


    @Override
    public List<ThingDTO> convert(MappingContext<List<Thing>, List<ThingDTO>> context) {
    List<Thing> source = context.getSource();
    List<ThingDTO> output = new ArrayList<>();
    ...
    //Convert programmatically List<Thing> to List<ThingDTO>
    ...

    return output;
    }}
  2. 然后自定义一个 Thing 到 ThingDTO 的映射,如下所示:

        public class SourceToSourceDTOMap extends PropertyMap<Thing, ThingDTO> {
    @Override
    protected void configure(){
    using(new ListThingToThingDTOConverter()).map(source.getThings()).setThings(null);
    }
  3. 最后,您必须将 SourceToSourceDTOMap 添加到您的 ModelMapper,如下所示:

    modelMapper = new ModelMapper();
    modelMapper.addMappings(new SourceToSourceDTOMap());

关于java - 如何使用modelMapper转换嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com