将源源类中缺少的字段映射到目标类中字段的默认值有哪些选项?
我有类似的东西:
public class MySource {
private String name;
}
public class MyDest {
private String name;
private int age;
}
由于 MyDest 中的“年龄”字段在 MySource 中没有相应的字段,我想通过 Orika 映射插入默认值。
注意:我无法更改 MySource 或 MyDest 的类定义
您可以自定义您的
mapperFactory
并检查 age
对象中是否存在 source
字段。如果没有,则在 destination
对象中设置任何默认年龄。
下面是代码片段。
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
public boolean doesObjectContainsField(Object object, String fieldName) {
return Arrays.stream(object.getClass().getFields())
.anyMatch(f -> f.getName().equals(fieldName));
}
mapperFactory.classMap(MySource.class, MyDest.class)
.byDefault()
.customize(new CustomMapper<>() {
@Override
public void mapAtoB(MySource source, MyDest destination, MappingContext context) {
if(doesObjectContainsField(src,"age"){
destination.setAge(40);
}
}}).register();