Orika:将常量默认值映射到字段

Orika: map constant default value to a field

有没有办法使用 Orika 将字段的值设置为文字或常量值?

我的意思是:

public class ObjectMapper extends ConfigurableMapper {

        protected void configure(MapperFactory factory) {
             factory.classMap(SourceClass.class, DestinationClass.class)
             .field("myField", "CONSTANT_VALUE")
             .byDefault()
             .register();
        }
}

我在文档中找不到类似的东西...

根据 Orika 文档的 this section,设置文字值的唯一方法是自定义映射。例如:

public class ObjectMapper extends ConfigurableMapper {

        protected void configure(MapperFactory factory) {
             factory.classMap(SourceClass.class, DestinationClass.class)
             .byDefault()
             .customize(new CustomMapper<SourceClass, DestinationClass>() {
                @Override
                public void mapAtoB(SourceClass a, DestinationClass b, MappingContext context) {
                    b.setMyField("CONSTANT_VALUE");
                }

                // ...
            })
            .register();
        }
}

我找到了一个简单的解决方案

public class ObjectMapper extends ConfigurableMapper {

    protected void configure(MapperFactory factory) {
         factory.classMap(SourceClass.class, DestinationClass.class)
         .field("", "myField:{|setMyField('MY CONSTANT')}")
         .byDefault()
         .register();
    }
}

源可以是空的,你只需要用 属性 和 setter 方法的名称填充目标。