java - 如何使用 MapStruct 应用两个参数映射对象的函数?

标签 java mapstruct

有两个源类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)

最佳答案

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

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

有关表达式的更多信息可以在引用文档中找到 here

关于java - 如何使用 MapStruct 应用两个参数映射对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44809227/

相关文章:

java - android中的套接字、线程和服务,如何让它们协同工作?

java - 为什么从不同的类引用 Image 时会出现 java.lang.NullPointerException ?

java - Lombok 在升级到 Gradle 5.0 后导致 MapStruct compileJava 构建失败

java - 我想在 mapstruct 生成的 ~impl 文件中为 list.add 提供条件。我应该怎么办?

hibernate - 使用 mapstruct 映射 Hibernate 实体

java.io.File 自定义文件名

java - 正则表达式在 Twitter 文本文件中查找 Shorturl

java - NetBeans - 如何将面板移动到新文件(代码太大)

java - Mapstruct:将多个源对象映射到子对象

java - Lombok + QueryDsl + Mapstruct : error compiling: java. lang.NoClassDefFoundError : javax/persistence/Entity: javax. persistence.Entity