如何使用 ModelMapper 映射嵌套列表
How to map a nested list using ModelMapper
我遇到了一个问题,我正在使用 ModelMapper 来映射对象,但我发现自己无法使用自定义映射来解决这个问题。
这是我的源模型:
public class UserSource {
private List<IdentitySource> identities;
}
public class IdentitySource {
private String firstName;
private String lastName;
}
这是我的目标模型:
public class UserDestination {
private List<NestedIdentityDestination> nestedIdentities;
}
public class NestedIdentityDestination {
private IdentityDestination identity;
}
public class IdentityDestination {
private String firstName;
private String lastName;
}
请问有人知道如何使用 ModelMapper 实现这个吗?
经过更多的研究和试验,我明白了。我需要混合使用转换器和类型映射。
这是我的解决方案:
Converter<List<IdentitySource>, List<NestedIdentityDestination>> convertIdentities = new AbstractConverter<>() {
protected List<NestedIdentityDestination> convert(List<IdentitySource> source) {
return source.stream().map(identity -> {
NestedIdentityDestination nestedIdentity = new NestedIdentityDestination();
nestedIdentity.setIdentity(modelMapper.map(identity, IdentityDestination.class));
return nestedIdentity;
}).collect(Collectors.toList());
}
};
modelMapper.typeMap(UserSource.class, UserDestination.class)
.addMappings(mapper -> mapper.using(convertIdentities)
.map(UserSource::getIdentities, UserDestination::setNestedIdentities));
希望这对面临同样问题的其他人有所帮助。
我遇到了一个问题,我正在使用 ModelMapper 来映射对象,但我发现自己无法使用自定义映射来解决这个问题。
这是我的源模型:
public class UserSource {
private List<IdentitySource> identities;
}
public class IdentitySource {
private String firstName;
private String lastName;
}
这是我的目标模型:
public class UserDestination {
private List<NestedIdentityDestination> nestedIdentities;
}
public class NestedIdentityDestination {
private IdentityDestination identity;
}
public class IdentityDestination {
private String firstName;
private String lastName;
}
请问有人知道如何使用 ModelMapper 实现这个吗?
经过更多的研究和试验,我明白了。我需要混合使用转换器和类型映射。
这是我的解决方案:
Converter<List<IdentitySource>, List<NestedIdentityDestination>> convertIdentities = new AbstractConverter<>() {
protected List<NestedIdentityDestination> convert(List<IdentitySource> source) {
return source.stream().map(identity -> {
NestedIdentityDestination nestedIdentity = new NestedIdentityDestination();
nestedIdentity.setIdentity(modelMapper.map(identity, IdentityDestination.class));
return nestedIdentity;
}).collect(Collectors.toList());
}
};
modelMapper.typeMap(UserSource.class, UserDestination.class)
.addMappings(mapper -> mapper.using(convertIdentities)
.map(UserSource::getIdentities, UserDestination::setNestedIdentities));
希望这对面临同样问题的其他人有所帮助。