2

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

4

2 回答 2

1

这应该可以解决问题:

mapperFactory.classMap(A.class, B.class)
        .customize(new CustomMapper<A,B>() { 
                if(A.getLastModifiedTime() > B.getLastModifiedTime()){
                        A.getLastModifiedTime() == B.getLastModifiedTime();
                }
         }).register();
于 2016-01-16T16:43:46.313 回答
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;    
    }
}
于 2016-02-10T15:09:54.563 回答