Java 如何使用模型映射器映射修改的、不匹配目标、源值?
我有两个API实体(Java 如何使用模型映射器映射修改的、不匹配目标、源值?,java,reusability,modelmapper,Java,Reusability,Modelmapper,我有两个API实体(EntityA和EntityB)实现了BaseEntity。 两个实体都具有可为空的参数标识符 @Value @Builder(builderClassName = "Builder") public class EntityA implements BaseEntity { String identifier; ... } 我还有POJO和externalId参数。此字段值应包括源标识符的4个字符的前缀 @Data @ToString(call
EntityA
和EntityB
)实现了BaseEntity
。
两个实体都具有可为空的参数标识符
@Value
@Builder(builderClassName = "Builder")
public class EntityA implements BaseEntity {
String identifier;
...
}
我还有POJO和externalId
参数。此字段值应包括源标识符的4个字符的前缀
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class Pojo {
private String externalId;
...
}
我想使用ModelMapper
将API值映射到现有的POJOPojoEntity
。但是,
public Pojo mapEntityAToPojo(EntityA entity, Pojo pojo) {
modelMapper.map(entity, pojo);
Optional.ofNullable(entity.getIdentifier()).ifPresent(
identifier -> pojo.setExternalId(getIdentifierAlphaNumericPrefix(identifier)));
return pojo;
}
public Pojo mapEntityBToPojo(EntityB entity, Pojo pojo) {
modelMapper.map(entity, pojo);
Optional.ofNullable(entity.getIdentifier()).ifPresent(
identifier -> pojo.setExternalId(getIdentifierAlphaNumericPrefix(identifier)));
return pojo;
}
private String getIdentifierAlphaNumericPrefix(String identifier) {
return identifier.replaceAll("[^a-zA-Z0-9]", "").substring(0, 4);
}
但我确信,有一种更优雅的方式来配置模型映射器。有什么建议吗
public Pojo mapEntityAToPojo(EntityA entity, Pojo pojo) {
modelMapper.map(entity, pojo);
Optional.ofNullable(entity.getIdentifier()).ifPresent(
identifier -> pojo.setExternalId(getIdentifierAlphaNumericPrefix(identifier)));
return pojo;
}
public Pojo mapEntityBToPojo(EntityB entity, Pojo pojo) {
modelMapper.map(entity, pojo);
Optional.ofNullable(entity.getIdentifier()).ifPresent(
identifier -> pojo.setExternalId(getIdentifierAlphaNumericPrefix(identifier)));
return pojo;
}
private String getIdentifierAlphaNumericPrefix(String identifier) {
return identifier.replaceAll("[^a-zA-Z0-9]", "").substring(0, 4);
}