MapStruct:是否可以为一个类型的所有嵌套字段指定使用相同的命名映射?
MapStruct: Is it possible to specify using the same named mapping for all nested fields of a type?
是否可以为嵌套映射器指定限定符,而不必为特定类型 bean 的 each 实例指定限定符?
一些代码来说明我的观点。我有一个 Parent object 像:
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);
}
我知道我可以为每个 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);
}
我想弄清楚的是,是否有某种方法可以使用 type (ChildDTO) 的每个 qualifiedByName 中指示的映射,而不必为每个实例类型(childA,childB,childC)。这可能吗?
目前这是不可能的。
但是,您可以做的是拥有 2 ChildMapper
(s)。这样你就可以在你的 ParentMapper
中使用最小的那个了。另一种选择是在 ParentMapper
中定义最小映射,而不是重复使用 ChildMapper
.
是否可以为嵌套映射器指定限定符,而不必为特定类型 bean 的 each 实例指定限定符?
一些代码来说明我的观点。我有一个 Parent object 像:
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);
}
我知道我可以为每个 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);
}
我想弄清楚的是,是否有某种方法可以使用 type (ChildDTO) 的每个 qualifiedByName 中指示的映射,而不必为每个实例类型(childA,childB,childC)。这可能吗?
目前这是不可能的。
但是,您可以做的是拥有 2 ChildMapper
(s)。这样你就可以在你的 ParentMapper
中使用最小的那个了。另一种选择是在 ParentMapper
中定义最小映射,而不是重复使用 ChildMapper
.