重写从 orika 到 mapstruct 的集合映射
Rewriting collection mapping from orika to mapstruct
你能告诉我如何使用 @Mapping 重写从 orika 到 mapstruct 的映射吗?
factory.classMap(SomeEntity.class, SomeDto.class)
.fieldAToB("items{innerItem.id}", "innerItemIds{}")
.byDefault().register();
不使用额外的方法。
是否存在这样的写法
@Mapping(source = "items{innerItem.id}", target = "innerItemIds{}")
SomeDto map(SomeEntity entity);
我不完全了解 Orika 的工作原理。但是,在 MapStruct 中,您可以为映射提供 MapStruct 无法执行的自定义方法。没有别的办法,不用额外的方法。
在您的情况下,您需要执行以下操作:
@Mapper
public interface MyMapper {
@Mapping(target = "innerItemIds", source = "items")
SomeDto map(SomeEntity entity);
default String map(InnterItem item) {
return item == null ? null : item.getId();
}
}
您将使用 @Mapping
告诉 MapStruct 它需要将 items
集合映射到 innerItemIds
。我假设 items
是 Collection<InnerItem>
而 innerItemIds
是 Collection<String>
.
你能告诉我如何使用 @Mapping 重写从 orika 到 mapstruct 的映射吗?
factory.classMap(SomeEntity.class, SomeDto.class)
.fieldAToB("items{innerItem.id}", "innerItemIds{}")
.byDefault().register();
不使用额外的方法。
是否存在这样的写法
@Mapping(source = "items{innerItem.id}", target = "innerItemIds{}")
SomeDto map(SomeEntity entity);
我不完全了解 Orika 的工作原理。但是,在 MapStruct 中,您可以为映射提供 MapStruct 无法执行的自定义方法。没有别的办法,不用额外的方法。
在您的情况下,您需要执行以下操作:
@Mapper
public interface MyMapper {
@Mapping(target = "innerItemIds", source = "items")
SomeDto map(SomeEntity entity);
default String map(InnterItem item) {
return item == null ? null : item.getId();
}
}
您将使用 @Mapping
告诉 MapStruct 它需要将 items
集合映射到 innerItemIds
。我假设 items
是 Collection<InnerItem>
而 innerItemIds
是 Collection<String>
.