modelmapper跳过嵌套对象的属性

时间:2016-12-20 06:56:57

标签: java properties nested skip modelmapper

class A {               class ADto {
   int id;      ->         int id;
   List<B> b;              List<BDto> b;
}                       }   

class B {               class BDto {
   int id;      ->         int id;
   C c;                    CDto c;
}                       }   

转换A -> ADto时,我想跳过C -> CDto的映射。 我的印象是,只要B -> BDto之间发生转换,下面的映射器就会起作用,但似乎并非如此;所以下面的映射器在转换(A -> ADto) ...

时没有帮助
class BMap extends PropertyMap<B, BDto> {
    @Override
    protected void configure() {
        skip(destination.getC());
    }
}

实现这个目标的方法应该是什么?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以有两种不同的选择。

1)使用ModelMapper实例和Property Map B到BD to skiping c

第一个是使用ModelMapper实例来处理这个特殊情况,它在length映射中添加了PropertyMap skipe c。所以你必须添加它:

B -> BDto

2)创建一个转换器并在A到AD到PropertyMap

中使用它

另一种选择是使用转换器,因此在您的情况下,您应该ModelMapper mapper = new ModelMapper(); mapper.addMappings(new BMap()); 转换Converter,然后在B -> BDto A -> ADto中使用它:

PropertyMap

然后在PropertyMap中使用Converter:

 public class BToBDto implements Converter<B, BDto> {
      @Override
      public BDtoconvert(MappingContext<B, BDto> context) {
          B b = context.getSource();
          BDto bDto = context.getDestination();
         //Skip C progammatically....
         return bDto ;
      }
 }