首页 > 解决方案 > 我的映射器接口中是否可以有多个方法,几乎​​相同但返回对象不同?

问题描述

例如,我的映射器接口中是否可以有 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);

标签: javamapstruct

解决方案


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);
}

推荐阅读