lombok~避(bi)免(mian)Boolean屬(shu)性使(shi)用默認(ren)的(de)方法
前言
前端(duan)與后(hou)端(duan)在進行交互時(shi),前端(duan)傳的對象中,有的屬性(xing)是int,boolean這些類型(xing),它(ta)們是有默認(ren)值的,當(dang)前端(duan)不轉它(ta)們時(shi),后(hou)端(duan)也會接收(shou)到默認(ren)值,如(ru)(ru)int為(wei)(wei)0,boolean為(wei)(wei)false,這就給(gei)后(hou)端(duan)代(dai)碼帶來不確定性(xing);比如(ru)(ru)要有個put更新用(yong)(yong)戶(hu)的方法,有個用(yong)(yong)戶(hu)對象如(ru)(ru)下
@Data
public class UserAccountResponse implements Serializable {
private String id;
private String name;
private boolean isDefault;
}
當前端只put更新(xin)name時(shi),如果不(bu)傳isDefault,后端接收到的(de)是(shi)isDefault=0,這(zhe)是(shi)不(bu)對的(de),會(hui)出現數據(ju)被覆蓋的(de)問(wen)題;基于這(zhe)個問(wen)題我們需(xu)要將boolean改成封裝類(lei)型Boolean,當前端不(bu)傳時(shi),它是(shi)為null的(de);而(er)在lombok中,boolean和(he)Boolean類(lei)型生成的(de) getter和(he)setter方法名(ming)是(shi)不(bu)同的(de),這(zhe)導(dao)致了(le)返回前端的(de)屬性名(ming)不(bu)同。
lombok中boolean和Boolean
對(dui)于上面的例子,在isDefault被返回前端時,它的名稱(cheng)分別是
- boolean 返回到前端為 default
- Boolean 返回到前端為 isDefault
為Boolean類型屬性進行適配
使用(yong) @Setter(AccessLevel.NONE)和@Getter(AccessLevel.NONE) 并手動(dong)實現 getter 和 setter
@Data
public class UserAccountResponse implements Serializable {
private String id;
private String name;
@Setter(AccessLevel.NONE)
@Getter(AccessLevel.NONE)
private boolean isDefault;
public Boolean getDefault() {
return isDefault; // 自定義 getter 方法
}
public void setDefault(Boolean isDefault) {
this.isDefault = isDefault;
}
}
這(zhe)樣(yang)再返回前端(duan)時,就是(shi)只有一(yi)個default字段了,不(bu)是(shi)與之前boolean產生沖突,當然,如果之前你使用(yong)的一(yi)直是(shi)Boolean就不(bu)會(hui)有這(zhe)個問(wen)題,本文章只使用(yong)于類型從boolean修改為Boolean的情況
{
"code": "200",
"data": [
{
"id": "57345f65bb064a9a95327e35a5034905",
"default": true,
"name": "normal"
}
]
}