lombok~避免Boolean屬性使用默認(rèn)的方法
前言
前端與后端在進(jìn)行交互時(shí),前端傳的對(duì)象中,有的屬性是int,boolean這些類型,它們是有默認(rèn)值的,當(dāng)前端不轉(zhuǎn)它們時(shí),后端也會(huì)接收到默認(rèn)值,如int為0,boolean為false,這就給后端代碼帶來不確定性;比如要有個(gè)put更新用戶的方法,有個(gè)用戶對(duì)象如下
@Data
public class UserAccountResponse implements Serializable {
private String id;
private String name;
private boolean isDefault;
}
當(dāng)前端只put更新name時(shí),如果不傳isDefault,后端接收到的是isDefault=0,這是不對(duì)的,會(huì)出現(xiàn)數(shù)據(jù)被覆蓋的問題;基于這個(gè)問題我們需要將boolean改成封裝類型Boolean,當(dāng)前端不傳時(shí),它是為null的;而在lombok中,boolean和Boolean類型生成的 getter和setter方法名是不同的,這導(dǎo)致了返回前端的屬性名不同。
lombok中boolean和Boolean
對(duì)于上面的例子,在isDefault被返回前端時(shí),它的名稱分別是
- boolean 返回到前端為 default
- Boolean 返回到前端為 isDefault
為Boolean類型屬性進(jìn)行適配
使用 @Setter(AccessLevel.NONE)和@Getter(AccessLevel.NONE) 并手動(dòng)實(shí)現(xiàn) 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;
}
}
這樣再返回前端時(shí),就是只有一個(gè)default字段了,不是與之前boolean產(chǎn)生沖突,當(dāng)然,如果之前你使用的一直是Boolean就不會(huì)有這個(gè)問題,本文章只使用于類型從boolean修改為Boolean的情況
{
"code": "200",
"data": [
{
"id": "57345f65bb064a9a95327e35a5034905",
"default": true,
"name": "normal"
}
]
}
浙公網(wǎng)安備 33010602011771號(hào)