使用 MapStruct 的文档,我发现使用
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE
可以选择在从源更新到目标时忽略空值的选项。这对于更新所有内容(除了我的布尔值)非常有效。如果我不提供特定的布尔值,它会假设为 false
并更新我的目标。我在文档中没有找到太多其他内容,也许我正在查看它 - 但我想避免不惜一切代价自己进行空检查,以便我可以拥有简单的补丁/更新功能。我的预感是我正在寻找一些东西,或者可能是龙目岛出了问题。
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, nullValueCheckStrategy= NullValueCheckStrategy.ALWAYS)
public interface StoreMapper {
StoreMapper INSTANCE = Mappers.getMapper(StoreMapper.class);
@Mapping(target="id", source="id", ignore=true)
void updateStoreFromUpdateStoreDto(UpdateStoreDto source, @MappingTarget Store store);
}
聚甲醛
<org.mapstruct.version>1.6.3</org.mapstruct.version>
<lombok.version>1.18.30</lombok.version>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
boolean
切换为
Boolean
作为变量类型,解决了该问题。