当前位置: 首页 > 知识库问答 >
问题:

如何为Mapstruct指定默认映射方法

商佑运
2023-03-14

我有简单的对象客户端

public class Client {
    String externalCode;
    String name;
    String surname;
}
public class User {
    String internalCode;
    String name;
    String surname;
}
@Mapper()
ClientMapper {
     @CodeMapping
     String toInternalCode(String externalCode) {
          return externalCode + " internal part";
     }

    @Mapping(target = "internalCode", source = "externalCode", qualifiedBy = CodeMapping.class)
    User toUser(Client client);
}

共有1个答案

鲜于凯歌
2023-03-14

最有可能的是,所有方法都使用toInternalCode,因为@codemapping注释不是用@qualifier(来自org.mapstruct.qualifier)进行元注释的。

应按以下方式定义@codemapping

import org.mapstruct.Qualifier;

@Qualifier
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface CodeMapping {
}
 类似资料:
  • 这是我的例子。 我希望toDto方法使用toDto将Employee映射到EmployeeDto,但mapstruct会生成employeeDtoToEmployeeDto方法。我该怎么修? 谢谢

  • 问题内容: 如果名称和名称相同,默认情况下MapStruct将映射源和目标的所有属性。尽管我们可以在@Mapping中使用ignore属性来省略任何字段映射。但这不是我想要的。我想控制映射策略。我必须指定类似 现在此映射仅用于将ID和名称从源映射到目标。除非在映射注释中指定,否则不应映射其他字段。 问题答案: 您正在寻找的是#1392中 的功能请求。有一个待定的PR,因此可以在下一版本(1.3.0

  • 例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?

  • 默认情况下,MapStruct映射源和目标的所有属性,如果它们具有相同的名称。中的元素可用于省略任何字段映射。但那不是我想要的。我想控制映射策略。我想指定如下内容: 现在,这个映射仅仅意味着将id和名称从源映射到目的地。除非在mappings注释中指定,否则不应映射其他字段。

  • 我有一个mapstruct类,具有以下函数 CustomApplication和常规应用程序都扩展了App,因此我有根据isCustom字段调用转换器的main Converter。 问题是,当我尝试构建这个时,我得到了一个模糊的映射错误,因为main Converter、ConvertNorarApplication和ConvertCustomApplication都从Application D

  • 我看到生成的代码使用方法将转换为,但我希望使用方法。是否可以“全局”配置它?