我当前的映射器如下所示:
public abstract OwnerResponse toOwnerResponse(Owner owner);
A
Owner
具有 id
、name
等基本属性。正确映射这些属性。
现在 Owner
还有一个 address
属性,它将是一个 Address
类(带有 zip
、street
等)。在某些情况下,该地址可以为空。这在 json 响应中看起来像这样:
{"id": 1, "name": "Peter", "address": {"zip": null, "street": null}}
相反,我希望整个
Owner.address
成为 null
,而不是拥有一个具有很多 Address
属性的整个 null
类。例子:
{"id": 1, "name": "Peter", "address": null}
我如何实现这一目标?
@Mapping 注解指定对地址字段使用自定义的 QualifiedByName 方法 toAddressResponse()。此方法检查 Address 对象是否为空或其所有字段是否为空。如果是,则返回null;否则,它将继续进行法线贴图。
@Mapper
public interface OwnerMapper {
@Mapping(target = "address", qualifiedByName = "toAddressResponse")
OwnerResponse toOwnerResponse(Owner owner);
@Named("toAddressResponse")
default AddressResponse toAddressResponse(Address address) {
if (address == null || (address.getZip() == null && address.getStreet() == null)) {
return null;
}
return new AddressResponse(address.getZip(), address.getStreet());
}
}