我是 Mapstruct 的新手。我有一个场景,在我的目标对象中,我有一个带有键值对<String,String> 的 java 映射,我必须使用源对象内部对象属性/数据成员值来填充这个映射。
我的代码类似于波纹管(虚拟代码):
public class Student {
public String name;
public String rollNo;
public Map<String, String> marks;
}
public class ExamResult{
public String stud_name;
public String Stud_rollNo;
public Marks marks;
}
public class Marks{
public Integer English;
public Integer Maths;
public Integer Science;
}
我将如何手动实现如下相同的事情:
Student target;
ExamResult source;
target.setName(source.stud_name);
target.setRollNo(source.Stud_RollNo);
target.marks.put("ENGLISH",source.marks.english_marks);
target.marks.put("MATHS",source.marks.math_marks);
target.marks.put("SCIENCE",source.marks.science_marks);
对于直接属性映射,我找到了代码,但不确定如何映射要填充到映射中的值marks
。
我曾考虑过使用 java 表达式来填充目标映射值,但没有找到任何文档或此类用于目标对象的表达式示例。
我想像下面这样使用,但不确定它会起作用:
@Mapping(source = "stud_name", target = "name")
@Mapping(source = "Stud_RollNo", target = "rollNo")
@Mapping(source = "source.marks.english_marks",target = "java( marks.put(\"ENGLISH\",source.marks.english_marks )")
@Mapping(source = "source.marks.math_marks",target = "java( marks.put(\"MATHS\",source.marks.math_marks )")
@Mapping(source = "source.marks.science_marks",target = "java( marks.put(\"SCIENCE\",source.marks.science_marks )")
Student doConvert(ExamResult src)
感谢任何帮助、任何建议或任何解决方法。提前致谢。