有没有办法使用MatStruct映射DTO,它也有一些最终数据成员,并且不能有默认构造函数,如:
public class TestDto {
private final String testName;
private int id;
private String testCase;
public TestDto(String testName) {
this.testName = testName;
}
public String getTestName() {
return testName;
}
public int getId() {
return id;
}
public String getTestCase() {
return testCase;
}
public void setId(int id) {
this.id = id;
}
public void setTestCase(String testCase) {
this.testCase = testCase;
}
}
请建议如何使用MapStruct映射此DTO。
答案 0 :(得分:1)
您可以使用构建DTO实例的@ObjectFactory。
例如:
@Mapper
public interface MyMapper {
@ObjectFactory
default TestDto create() {
return new TestDto("My Test Name");
}
//the rest of the mappings
}
您还可以增强@ObjectFactory
以接受可用于构建TestDto
的source参数。您甚至可以使用@Context
作为对象工厂。
注意:您不必将@ObjectFactory
方法放在同一个Mapper中,甚至放在MapStruct @Mapper
中。您可以将它放在任何类中(或使其静态),然后@Mapper(uses = MyFactory.class)