mapsterのマッピングで空の文字列を無視する方法はありますか?
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メソッドのロジックに基づいて、空の文字列をデフォルト値にマッピングするかどうかを判断します。