java - Orika:如何映射评估条件的 boolean 值

标签 java orika

我有两个类需要映射(目前是一种方式)。

class Order1 {
   int number;
   String status;
}

class Order2 {
    int number;
    boolean canceled;
    boolean confirmed;
}

我想做这样的事情:

mapperFactory.classMap(Order1.class, Order2.class)
    .map("status == 'Canceled'", "canceled")
    .map("status == 'Confirmed'", "confirmed")
    .byDefault().register();

有没有办法做这样的事情?

编辑:我尝试使用这样的 CustomMapper:

.customize(new CustomMapper<Order1, Order1>() {
    @Override
    public void mapAtoB(final Order1 a, final Order1 b, final MappingContext context) {
        String status = a.getStatus();
        b.setCanceled("Canceled".equals(status));
        b.setConfirmed("Confirmed".equals(status));
    }
})

这可行,但似乎不可能为同一对类添加许多自定义映射器。 相反,我使用了自定义转换器,正如 Sidi 的回答所解释的那样。

谢谢。

最佳答案

您可以将 public boolean isCanceled() 和 boolean isConfirmed() 添加到类 Order1 中吗? Orika 会自动映射它

或者

使用您可以创建一个带有 String 参数的转换器 StatusConverter,并注册它

converterFactory.registerConverter("canceled", new StatusConverter("Canceled"));
converterFactory.registerConverter("confirmed", new StatusConverter("Confirmed"));

然后

mapperFactory.classMap(Order1.class, Order2.class)
    .fieldMap("status", "canceled").converter("canceled").add()
    .fieldMap("status", "confirmed") .converter("confirmed").add()
    .byDefault().register();

此转换器应将字​​符串转换为 boolean 值,如果给定参数等于该值,则返回 true。

关于java - Orika:如何映射评估条件的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819104/

相关文章:

java - Orika - 将对象(源)映射到对象(目标)的集合(集合)

java - 创建一个无操作 IncallingHandler

java - Orika vs JMapper - 它是如何工作的以及速度差异 - 为什么?

java - Orika 将两个字符串字段映射为一个 - 考虑到其余字段

java - 保存实体时 Spring/Hibernate 编码错误

java - Orika:如何使用嵌套映射器进行映射

java - 升级到 Java 8 导致单元测试中的 Orika 映射器 java.io.IOException : invalid constant type: 15 at 142

java - Android Studio - 非法字符 8204 错误

运行 jar 文件时出现 Java FileNotFoundException

java - 正则表达式\w字符类和等号