java - 如何使用模型映射器映射修改后的、不匹配目标、源值的映射?
问题描述
我有两个 API 实体 (EntityA
和EntityB
) 实现BaseEntity
。两个实体都有可为空的参数identifier
。
@Value
@Builder(builderClassName = "Builder")
public class EntityA implements BaseEntity {
String identifier;
...
}
@Value
@Builder(builderClassName = "Builder")
public class EntityB implements BaseEntity {
String identifier;
...
}
我也有带有externalId
参数的 POJO。该字段值应包含源标识符的 4 个字符的前缀。
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class Pojo {
private String externalId;
...
}
我想将 API 值映射到现有的 POJO PojoEntity
,使用ModelMapper
. 然而,
- 源 getter 和目标 setter 不匹配。
- source 的值应该被修改。
我可以在已经映射的 POJO 上设置值事后。
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);
}
但我敢肯定,有一种更优雅的方式来配置模型映射器。
有什么建议么?
解决方案
推荐阅读
- r - 汽车数据的 BLP 估计
- kubernetes - 动态配置和复制集的 PVC 行为
- amazon-web-services - 如何使用带有选择功能的 SAM 部署 AWS Lambda 函数?
- button - 在 Odoo 中为按钮添加树标题
- javascript - 无法从数组中删除特定项目
- typescript - 在 ExcelJS 中一次删除多个空行
- android - 点击 android 推送通知有时不会重定向到应用程序
- r - R GSRUB 函数
- influxdb - 将两个 InfluxDB 行合二为一 - Flux 查询
- bitrix - Bitrix - 创建任务时发送邮件并将其分配给负责人