Mapstruct:将多个源对象映射到子对象
Mapstruct: Mapping multiple source objects to subobjects
给定一组四个对象,例如:
A{String one, B b}
B{String two, String three}
C{String one, String two}
D{String three}
我希望生成如下映射:
A cAndDToA(C c , D d);
我目前找不到用 C 和 D 的数据填充 A 内部的 B 对象的方法。
有谁知道这个问题的解决方法,或者有更好的方法吗?
您可以定义一种方法,用于从 C
和 D
:
填充 B
B cAndDToB(C c, D d);
然后通过 cAndDToA
上的 decorator 手动调用它:
@Mapper(decoratedWith=MyMapperDecorator.class)
public interface MyMapper {
A cAndDToA(C c, D d);
B cAndDToB(C c, D d);
}
public abstract class MyMapperDecorator implements MyMapper {
private final MyMapper delegate;
public MyMapperDecorator(MyMapper delegate) {
this.delegate = delegate;
}
@Override
public A cAndDToA(C c, D d) {
A a = delegate.cAndDToA( c, d );
a.setB( cAndDToB( c, d );
return a;
}
}
我们也会在目标端提供对 nested mappings 的支持。但我们还没有做到:)
给定一组四个对象,例如:
A{String one, B b}
B{String two, String three}
C{String one, String two}
D{String three}
我希望生成如下映射:
A cAndDToA(C c , D d);
我目前找不到用 C 和 D 的数据填充 A 内部的 B 对象的方法。
有谁知道这个问题的解决方法,或者有更好的方法吗?
您可以定义一种方法,用于从 C
和 D
:
B
B cAndDToB(C c, D d);
然后通过 cAndDToA
上的 decorator 手动调用它:
@Mapper(decoratedWith=MyMapperDecorator.class)
public interface MyMapper {
A cAndDToA(C c, D d);
B cAndDToB(C c, D d);
}
public abstract class MyMapperDecorator implements MyMapper {
private final MyMapper delegate;
public MyMapperDecorator(MyMapper delegate) {
this.delegate = delegate;
}
@Override
public A cAndDToA(C c, D d) {
A a = delegate.cAndDToA( c, d );
a.setB( cAndDToB( c, d );
return a;
}
}
我们也会在目标端提供对 nested mappings 的支持。但我们还没有做到:)