lombok~避免Boolean属性使用默认的方法

敢于对过去告一个段落,才有信心掀开新的篇章! 2024-09-30 11:09:00 阅读 91

前言

前端与后端在进行交互时,前端传的对象中,有的属性是int,boolean这些类型,它们是有默认值的,当前端不转它们时,后端也会接收到默认值,如int为0,boolean为false,这就给后端代码带来不确定性;比如要有个put更新用户的方法,有个用户对象如下

<code>@Data

public class UserAccountResponse implements Serializable {

private String id;

private String name;

private boolean isDefault;

当前端只put更新name时,如果不传isDefault,后端接收到的是isDefault=0,这是不对的,会出现数据被覆盖的问题;基于这个问题我们需要将boolean改成封装类型Boolean,当前端不传时,它是为null的;而在lombok中,boolean和Boolean类型生成的 getter和setter方法名是不同的,这导致了返回前端的属性名不同。

lombok中boolean和Boolean

对于上面的例子,在isDefault被返回前端时,它的名称分别是

  • boolean 返回到前端为 default
  • Boolean 返回到前端为 isDefault

为Boolean类型属性进行适配

使用 @Setter(AccessLevel.NONE)和@Getter(AccessLevel.NONE) 并手动实现 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;

}

这样再返回前端时,就是只有一个default字段了,不是与之前boolean产生冲突,当然,如果之前你使用的一直是Boolean就不会有这个问题,本文章只使用于类型从boolean修改为Boolean的情况

{

"code": "200",

"data": [

{

"id": "57345f65bb064a9a95327e35a5034905",

"default": true,

"name": "normal"

}

]

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。