java - 具有完全相同字段的对象之间的映射结构

标签 java mapstruct

我一直在使用mapstruct映射略有不同的类的对象。

现在,我有一个用例,其中两个类完全相同。 其中一个类是 BO(Qualification),另一个类是具有完全相同字段的 DTO(QualificationRecord)。

如何使用 @Mapper 在这两种类型之间进行转换?

到目前为止,我正在做

@Mapping(source = "qualificationId", target = "qualificationId")
QualificationRecord getQualificationRecordFromQualification(final Qualification qualification);

并且它能够生成映射器,设置所有字段。 但是,source = "qualificationId", target = "qualificationId" 似乎是多余的,我不得不添加它只是因为没有可用的无参数 @Mapping() 注释。

有没有一种方法可以告诉映射器复制所有字段,而不需要编写多余的行?

最佳答案

只需在接口(interface)中定义映射方法,如下所示,即可将所有字段从一个对象复制到另一个对象:

/**
     * Mapper. Automatically implemented by mapstruct.
 * 
 */
@Mapper
public interface SomeObjMapper {

    /**
     * instance.
     */
    final SomeObjMapper INSTANCE = Mappers.getMapper(SomeObjMapper.class);

    /**
     * Mapper method to map entity to domain. Automatically implemented by mapstruct.
     * 
     * @param entity
     *        given entity.

     * @return Returns the domain object.
     */
    SomeObj entityToDomain(SomeObjEntity entity);

    /**
     * Mapper method to map domain object to entity. Automatically implemented by mapstruct.
     * 
     * @param domain
     *        given domain object.
     * @return Returns the entity.
     */
    SomeObjEntity domainToEntity(SomeObj domain);

}

关于java - 具有完全相同字段的对象之间的映射结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63812245/

相关文章:

java - 在 Eclipse 中使用 JSON

java - Proguard 不会删除我的日志

java - 创建 GZip 响应的 JSP 过滤器

java - 将 JLabel 插入 JComboBox

java - 如何将 Guice 和 Mapstruct 结合起来?

java - 使用 MapStruct 将 2 个字符串字段映射到 OffsetDateTime

java - Windows x64 上的 Tomcat 使用 32 位 JDK

java - Weblogic 12c-Mapstruct-1.0.0.Final-ClassNotFoundException : Cannot find implementation

java - Mapstruct 扩展包含具有相同签名的方法的多个接口(interface)

java - 如果属性为空,如何让 MapStruct 不生成包装器对象?