所以我有一个源对象Obj1和一个目标对象Obj2。我创建了一个映射器接口Object1Mapper,它从Obj1映射到Obj2。然而,没有出现任何错误,我不明白为什么。
@Data
@Entity
@Table(name="test")
@NoArgsConstructor
public class Obj1 {
private String val1;
private String val2;
public Obj1(String val1, String val2){
this.val1 = val1;
this.val2 = val2;
}
@Data
public class Obj2 {
private String val1;
}
@Mapper
public interface Object1Mapper {
Object1Mapper INSTANCE = Mappers.getMapper(Object1Mapper.class);
Obj2 obj1ToObj2(Obj1 obj1);
}
当我做时
obj1 = new Obj1("aa", "bb")
System.out.println(Object1Mapper.INSTANCE.obj1ToObj2(o_1obj1));
它打印出"Obj1(value1=aa(">
在映射器实现中,只有创建的目标对象Obj2的属性的设置器。那么,只有那些存在于源对象和目标对象中的属性会自动映射吗?
所以只有那些存在于源和目标对象?
没错。只需要映射目标属性。并且您必须配置所有映射目标。例如,如果你想将Obj2映射到Obj1,你必须配置不映射val2
@Mapping(target="val2" ignore="true")
Obj1 obj2ToObj1(Obj2 obj2)