私は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)
ヘルプ、提案、または回避策をいただければ幸いです。前もって感謝します。