Orika 将字段映射到默认或固定值

问题描述 投票:0回答:1

将源源类中缺少的字段映射到目标类中字段的默认值有哪些选项?

我有类似的东西:

public class MySource {
  private String name;
}

public class MyDest {
    private String name;
    private int age;
}

由于 MyDest 中的“年龄”字段在 MySource 中没有相应的字段,我想通过 Orika 映射插入默认值。

注意:我无法更改 MySource 或 MyDest 的类定义

java mapping pojo orika
1个回答
0
投票

您可以自定义您的

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();
© www.soinside.com 2019 - 2024. All rights reserved.