java - 我的映射器接口中是否可以有多个方法,几乎相同但返回对象不同?
问题描述
例如,我的映射器接口中是否可以有 2 个方法,几乎相同但返回对象不同(字段数量较少)?我创建了一个额外的 DTO 对象,它小于原始对象(例如 MySmallDto)。我是否必须创建一个新的映射器接口,或者我可以重用现有映射器中的逻辑?
public interface SearchDtoMapper {
@Mapping(target = "lPlace", source = "route", qualifiedByName = "SpotToLPlace")
@Mapping(target = "uPlace", source = "route", qualifiedByName = "SpotToUPlace")
MyBigDto map(Route route);
在同一个映射器中,我想要类似的东西:
@Mapping(target = "lPlace", source = "route", qualifiedByName = "SpotToLPlace")
@Mapping(target = "uPlace", source = "route", qualifiedByName = "SpotToUPlace")
MySmallDto map(Route route);
解决方案
MapStruct 可以有尽可能多的方法以及你想要的尽可能多的源和返回类型。
因此,在您的示例中,您可以执行以下操作:
public interface SearchDtoMapper {
@Mapping(target = "lPlace", source = "route", qualifiedByName = "SpotToLPlace")
@Mapping(target = "uPlace", source = "route", qualifiedByName = "SpotToUPlace")
MyBigDto map(Route route);
@Mapping(target = "lPlace", source = "route", qualifiedByName = "SpotToLPlace")
@Mapping(target = "uPlace", source = "route", qualifiedByName = "SpotToUPlace")
MySmallDto mapSmall(Route route);
}