指示orika什么时候应该映射

时间:2015-08-28 20:33:28

标签: orika

有没有办法专门告诉Orika何时映射给定项目?例如,我希望Orika仅在A.getLastModifiedTime() > B.getLastModifiedTime时映射我的项目。有没有办法以某种方式配置它?

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

mapperFactory.classMap(A.class, B.class)
        .customize(new CustomMapper<A,B>() { 
                if(A.getLastModifiedTime() > B.getLastModifiedTime()){
                        A.getLastModifiedTime() == B.getLastModifiedTime();
                }
         }).register();

答案 1 :(得分:0)

根据运行时条件,您可以使用Orika过滤器来映射或不映射字段。最简单的方法是扩展Orika的NullFilter。

class MyFilter<A,B> extends NullFilter<A,B> {

    private myCondition(S source, D dest) {
      ...
    }

    public <S extends A, D extends B> boolean shouldMap(final Type<S> sourceType, final String sourceName, final S source, final Type<D> destType, final String destName,
                                                        final MappingContext mappingContext) {
        if (destName.equals("lastModifiedTime") && myCondition(source, dest)) {
          return false;
        } 

        return true;    
    }
}