6

有两个源类 A 和 B

class A {
    public Double x;
    public Double y;
}

class B {
    public Double x;
    public Double y;
}

和另一个目标类 C

class C {
    public Double x;
    public Double y;
}

很清楚如何将 A 映射到 C 或 B 到 C。

是否可以映射某些功能,例如,将源对象添加或 pow 到目标对象,以便生成的代码如下所示

C.x = A.x + B.x
C.y = A.y + B.y

或者

C.x = Math.pow(A.x, B.x)
C.y = Math.pow(A.y, B.y)
4

1 回答 1

4

这可以通过使用表达式来完成。

@Mapper
public interface MyMapper {

    @Mapping(target = "x", expression = "java(a.x + b.x)")
    @Mapping(target = "y", expression = "java(a.y + b.y)")
    C map(A a, B b);
}

或者

@Mapper
public interface MyMapper {

    @Mapping(target = "x", expression = "java(Math.pow(a.x, b.x))")
    @Mapping(target = "y", expression = "java(Math.pow(a.y, b.y))")
    C map(A a, B b);
}

有关表达式的更多信息,请参见此处的参考文档

于 2017-06-28T21:47:06.120 回答