gpt4 book ai didi

java - modelmapper 跳过嵌套对象的属性

转载 作者:行者123 更新时间:2023-11-30 10:35:20 27 4
gpt4 key购买 nike

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) 使用带有 Property Map B to BDto skipping c 的 ModelMapper 实例

第一个是针对这种特殊情况使用 ModelMapper 实例,它在 B -> BDto 映射中添加了跳过 c 的 PropertyMap。所以你必须添加它:

ModelMapper mapper = new ModelMapper();
mapper.addMappings(new BMap());

2) 创建一个Converter并在A to ADto PropertyMap中使用

另一个选项是使用转换器,所以在你的情况下你应该有一个 Converter 来转换 B -> BDto 然后在 A -> ADto PropertyMap 使用它:

 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 ;
}
}

然后在您的 PropertyMap 中使用转换器:

    class BMap extends PropertyMap<B, BDto> {
@Override
protected void configure() {
using(new BToBDto()).map(source).setC(null);
//Other mappings...
}
}

关于java - modelmapper 跳过嵌套对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41236500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com