【发布时间】:2020-09-14 15:51:01
【问题描述】:
我最近开始使用 MapStruct 并且有这个疑问。那么是否可以将一个方法的映射继承到另一个用于映射前一个方法输出的子类的方法中。
例如 - 如果我有一个类 Car 需要映射到两个类 FourWheeler 和DetailedFourWheeler(它扩展了 FourWheeler 类),我可以使用为将 Car 转换为 FourWheeler 定义的映射到我的方法中将 Car 转换为详细四轮车? 这是示例代码 -
@lombok.Data
public class Car {
private String color;
private String brand;
private String variant;
}
@lombok.Data
public class FourWheeler {
private String paint;
private String company;
}
@lombok.Data
public class DetailedFourWheeler extends FourWheeler {
private String model;
}
我的映射器看起来像 -
@Mapper
interface FourWheelerMapper {
public static final FourWheelerMapper INSTANCE = Mappers.getMapper(FourWheelerMapper.class);
@Mappings({
@Mapping(source = "color", target = "paint"),
@Mapping(source = "brand", target = "company")
})
FourWheeler mapToFourWheeler(Car car);
@Mappings({
@Mapping(source = "color", target = "paint"),
@Mapping(source = "brand", target = "company"),
@Mapping(source = "variant", target = "model")
})
DetailedFourWheeler mapToDetailedFourWheeler(Car car);
}
我想知道是否可以更改 mapToDetailedFourWheeler 之类的 -
@InheritMappingsFromParent
@Mappings({
@Mapping(source = "variant", target = "model")
})
DetailedFourWheeler mapToDetailedFourWheeler(Car car);
这里我的 InheritMappingsFromParent 应该从之前的方法中引入颜色和品牌的映射。
我无法在文档中找到与此相关的内容。 谢谢
【问题讨论】: