映射器的可重用性

Reusability of mappers

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

例如,我有一个输入 class:

public class MySource {
 private String props;
}

和不同的目标 classes

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