Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 映射器的可重用性_Java_Mapstruct - Fatal编程技术网

Java 映射器的可重用性

Java 映射器的可重用性,java,mapstruct,Java,Mapstruct,mapstruct是通过重用映射代码生成多个模型的正确工具吗 例如,我有一个输入类: public class MySource { private String props; } 以及不同的目标类别 public class FooClass { private String foo; } public class BarClass { private String bar; } 和制图员 public abstract class FooClassMapper { @Ma

mapstruct是通过重用映射代码生成多个模型的正确工具吗

例如,我有一个输入类:

public class MySource {
 private String props;
}
以及不同的目标类别

public class FooClass {
  private String foo;
}

public class BarClass {
  private String bar;
}
和制图员

public abstract class FooClassMapper {
  @Mapping(source = "props", target = "foo")
  public abstract FooClass mapFoo(MySource source)
}

public abstract class BarClassMapper {
  @Mapping(source = "props", target = "bar")
  public abstract BarClass mapBar(MySource source)
}
有没有一种方法可以通过使用MappingConfig、继承或其他方式避免使用多个映射器?

您可以在单个接口中声明多个(不同)映射方法,例如

@Mapper
public interface MySourceMapper {
  @Mapping(...)
  FooClass mapToFoo(MySource source);

  @Mapping(...)
  BarClass mapToBar(MySource source);
}

这是一个很好的方法。另一种选择是使用
Mapper#uses
@Filip
Mapper。uses
不会解决OP的请求,以避免有多个映射器;你仍然需要两个映射器,即使其中一个可以利用另一个。你是对的@JimmyB,我错过了那部分。OP没有尝试任何用途,所以我也提到了它。也许其他人会对此感兴趣