中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

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"
        }
    ]
}
posted @ 2024-09-27 09:01  張占嶺  閱讀(281)  評論(0)    收藏  舉報