Java中不同的ModelMapper相同实体到DTO的组合

问题描述

我具有以下实体类

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class EDetails {
Long id;
String type;
String comment;
String reason;
String site;
String location;
String secondaryLocation;
Date start;
Date end;
}

和DTO为

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class LDTO {

    Long lId;
    String lType;
    String reason;
    String comment;
    String inSite;
    String mLocation;
    Date startDate;
    Date endDate;
}

我有对象EDetails的列表,其中包含五个要在其中进行映射的元素:

  1. 在前3个对象中,要将EDetails.location映射到LDTO.mLocation
  2. 要在前2个对象中将EDetails.secondaryLocation映射到LDTO.mLocation

我可以按照以下方式在简单的typemap中映射第一步,但这仅适用于一种映射类型:

modelmapper.typeMap(EDetails.class,LDTO.class).addMappings(mapper -> {
            mapper.map(src -> src.getId(),LogsDTO::setLId);
            mapper.map(src -> src.getType(),LogsDTO::setLType);
            mapper.map(src -> src.getLocation(),LogsDTO::setMLocation);
            mapper.map(src -> src.getSite(),LogsDTO::setInSite);
            mapper.map(src -> src.getStart(),LogsDTO::setStarteDate);
            mapper.map(src -> src.getEnd(),LogsDTO::setEndDate);
        });

如何指定具有相同类组合和不同映射的特定映射器,并将其应用于单个对象,如果可以在mapstruct中提供此实现,那也足够了吗?


modelmapper.typeMap(EDetails.class,LogsDTO::setLType);
            mapper.map(src -> src.getSecondaryLocation(),LogsDTO::setEndDate);
        });

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)