MapStruct 利用映射从一个方法到另一个具有 return 类型的固有 class 的方法
MapStruct utilize Mappings from a method into another method having return type of an inherent class
最近开始用MapStruct,有这个疑惑。那么是否可以将映射从一种方法继承到另一种方法,该方法用于映射前一种方法输出的子class。
例如 - 如果我有一辆 class 汽车需要映射成两个 classes FourWheeler 和 DetailedFourWheeler(它扩展了 FourWheeler class)我可以使用映射为将 Car 转换为 FourWheeler 定义为我将 Car 转换为 DetailedFourWheeler 的方法?
这是示例代码 -
@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 应该从以前的方法中引入颜色和品牌的映射。
我无法在文档中找到与此相关的内容。
谢谢
MapStruct 具有 @InheritConfiguration
注释,可以满足您的需求。查看文档中的 Mapping configuration inheritance 了解更多信息。
在任何情况下,如果 DetailedFourWheeler
不扩展 FourWheeler
,它就不会工作,因为如果没有它,MapStruct 就无法知道类型是相关的。
最近开始用MapStruct,有这个疑惑。那么是否可以将映射从一种方法继承到另一种方法,该方法用于映射前一种方法输出的子class。
例如 - 如果我有一辆 class 汽车需要映射成两个 classes FourWheeler 和 DetailedFourWheeler(它扩展了 FourWheeler class)我可以使用映射为将 Car 转换为 FourWheeler 定义为我将 Car 转换为 DetailedFourWheeler 的方法? 这是示例代码 -
@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 应该从以前的方法中引入颜色和品牌的映射。
我无法在文档中找到与此相关的内容。 谢谢
MapStruct 具有 @InheritConfiguration
注释,可以满足您的需求。查看文档中的 Mapping configuration inheritance 了解更多信息。
在任何情况下,如果 DetailedFourWheeler
不扩展 FourWheeler
,它就不会工作,因为如果没有它,MapStruct 就无法知道类型是相关的。