在MapStruct中,如果要忽略空字符串的映射,可以使用NullValueMappingStrategy
和Expression
注解。
首先,在你的Mapper接口或類上添加nullValueMappingStrategy
注解,并將其值設置為NullValueMappingStrategy.RETURN_DEFAULT
。這將告訴MapStruct在映射時忽略空字符串。
例如:
@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)
public interface MyMapper {
// 映射方法
}
然后,在需要忽略空字符串的屬性上添加Expression
注解,并使用SpEL表達式指定一個條件來判斷是否將空字符串映射為默認值。
例如,假設你有一個名為name
的屬性,你希望在映射時忽略空字符串,可以這樣做:
@Mapping(target = "name", source = "name", qualifiedByName = "ignoreEmptyString")
DestinationObject map(SourceObject source);
@Named("ignoreEmptyString")
default String ignoreEmptyString(String value) {
return value.isEmpty() ? null : value;
}
在上面的示例中,我們在映射方法的@Mapping
注解中使用了qualifiedByName
屬性,并指定為ignoreEmptyString
。然后,我們在Mapper接口中添加了一個名為ignoreEmptyString
的默認方法,該方法接受一個字符串參數并返回一個字符串。在該方法中,我們使用了一個條件,如果字符串為空,則返回null
;否則,返回原始字符串。
這樣,MapStruct在映射時會根據ignoreEmptyString
方法的邏輯來判斷是否將空字符串映射為默認值。