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 方法的名称填充目标。
有没有办法使用 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 方法的名称填充目标。