Mapstruct - 将 customModel 映射到它的字符串表示
Mapstruct - Mapping customModel to it's string representation
我有以下结构
Public void Student(){
private string name;
private int age;
}
Public void Class(){
private string roomNo;
private Student student; //Student Object
}
Public void School(){
private string roomNo;
private String student; //String student
}
我正在尝试使用映射结构映射这些
@Mapping(source = "java(student.toString())", target = "student")
School mapClassToSchool(@NonNull Class class);
我收到以下错误
error: No property named "java(student.toString())" exists in source parameter(s). Did you mean "student"?
[javac] @Mapping(source = "java(student.toString())", target = "student")
[javac] ^
我试图通过这个 https://mapstruct.org/documentation/stable/reference/html/ 但不能为我的用例提供简单的例子
我如何将 student
映射到它的 string
表示
编辑:1
是否可以做
@Mapping(expression = new GSON().toJson(clazz.getStudent()), target = "student")
School mapClassToSchool(@NonNull Class class);
如果要使用表达式,则必须使用 Mapping#expression
。无论您在表达式中定义什么,它都会在生成的代码中一对一设置。
例如
@Mapping(expression = "java(clazz.getStudent().toString())", target = "student")
School mapClassToSchool(@NonNull Class clazz);
另一种方法是在 Student
和 String
之间定义一个映射方法,那么您就不需要为学生定义一个自定义的 @Mapping
。
例如
School mapClassToSchool(@NonNull Class clazz);
default String mapStudentToString(Student student) {
return student != null ? student.toString() : null;
}
请注意,class
是一个 Java 保留字。
- 这不编译:
School mapClassToSchool(@NonNull Class class)
。
- 改用
clazz
:School mapClassToSchool(@NonNull Class clazz)
.
我有以下结构
Public void Student(){
private string name;
private int age;
}
Public void Class(){
private string roomNo;
private Student student; //Student Object
}
Public void School(){
private string roomNo;
private String student; //String student
}
我正在尝试使用映射结构映射这些
@Mapping(source = "java(student.toString())", target = "student")
School mapClassToSchool(@NonNull Class class);
我收到以下错误
error: No property named "java(student.toString())" exists in source parameter(s). Did you mean "student"?
[javac] @Mapping(source = "java(student.toString())", target = "student")
[javac] ^
我试图通过这个 https://mapstruct.org/documentation/stable/reference/html/ 但不能为我的用例提供简单的例子
我如何将 student
映射到它的 string
表示
编辑:1
是否可以做
@Mapping(expression = new GSON().toJson(clazz.getStudent()), target = "student")
School mapClassToSchool(@NonNull Class class);
如果要使用表达式,则必须使用 Mapping#expression
。无论您在表达式中定义什么,它都会在生成的代码中一对一设置。
例如
@Mapping(expression = "java(clazz.getStudent().toString())", target = "student")
School mapClassToSchool(@NonNull Class clazz);
另一种方法是在 Student
和 String
之间定义一个映射方法,那么您就不需要为学生定义一个自定义的 @Mapping
。
例如
School mapClassToSchool(@NonNull Class clazz);
default String mapStudentToString(Student student) {
return student != null ? student.toString() : null;
}
请注意,class
是一个 Java 保留字。
- 这不编译:
School mapClassToSchool(@NonNull Class class)
。 - 改用
clazz
:School mapClassToSchool(@NonNull Class clazz)
.