[英]Is there a way to map an empty String to null using MapStruct?
上面的答案是可能的。 我個人更喜歡這樣做更安全一些,也許更具聲明性。
@Mapper
public interface MyMapper {
@Mapping( target = "s2", qualifiedBy = EmptyStringToNull.class )
Target map( Source source);
@EmptyStringToNull
default String emptyStringToNull(String s) {
return s.isEmpty() ? null : s;
}
@Qualifier
@java.lang.annotation.Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface EmptyStringToNull {
}
class Source {
private String s1;
private String s2;
public String getS1() {
return s1;
}
public void setS1(String s1) {
this.s1 = s1;
}
public String getS2() {
return s2;
}
public void setS2(String s2) {
this.s2 = s2;
}
}
class Target {
private String s1;
private String s2;
public String getS1() {
return s1;
}
public void setS1(String s1) {
this.s1 = s1;
}
public String getS2() {
return s2;
}
public void setS2(String s2) {
this.s2 = s2;
}
}
}
您可以根據需要多次重復使用EmptyStringToNull
限定符,並且不依賴於參數名稱。
您可以簡單地使用@Mapping
中的expression
@Mapping(target = "name", expression = "java(source.name.isEmpty() ? null : source.name)")
Dog convert(Cat source);
如果您希望它在映射器 class 中全局工作並攔截任何字符串映射,您可以簡單地實現以下內容:
default String mapEmptyString(String string) {
string != null && !string.isEmpty() ? string : null;
}
這將 map 任何null
或空String
源到null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.