猿问

MapStruct:是否可以为一个类型的所有嵌套字段指定使用相同的命名映射?

是否可以为嵌套映射器指定限定符,而不必为特定类型的 bean 的每个实例指定限定符?


一些代码来说明我的观点。我有一个父对象,例如:


public class ParentDTO {

    ChildDTO childA;

    ChildDTO childB;

    ChildDTO childC;

   // getters, setters, etc.

}

我有一个包含多个映射的 ChildMapper:


@Mapper

public interface ChildMapper {

    @Named("MinimalChildMapper")

    @Mapping(target = "someAttribute", ignore = true)

    ChildDTO toMinimalChildDTO(Child child);


    @Named("ChildMapper")

    ChildDTO toChildDTO(Child child);

}

我知道我可以像这样为每个孩子指定哪个孩子映射器:


@Mapper(uses = ChildMapper.class)

public interface ParentMapper {

    @Mapping(target = "childA", qualifiedByName = "MinimalChildMapping")

    @Mapping(target = "childB", qualifiedByName = "MinimalChildMapping")

    @Mapping(target = "childC", qualifiedByName = "MinimalChildMapping")

    ParentDTO toParentDTO(Parent parent);

}

我想弄清楚的是,是否有某种方法可以使用类型( ChildDTO) 的每个 qualifiedByName 中指示的映射,而不必为类型的每个实例(childA、childB、childC)指定它。这可能吗?


撒科打诨
浏览 167回答 1
1回答

Cats萌萌

目前这是不可能的。但是,您可以做的是拥有 2 ChildMapper(s)。这样你就可以在你的ParentMapper. 另一种选择是在您的文件中定义最小映射,ParentMapper而不是重用ChildMapper.
随时随地看视频慕课网APP

相关分类

Java
我要回答