qidao123.com技术社区-IT企服评测·应用市场

标题: lombok~制止Boolean属性使用默认的方法 [打印本页]

作者: 渣渣兔    时间: 2024-9-27 07:36
标题: lombok~制止Boolean属性使用默认的方法
前言

前端与后端在进行交互时,前端传的对象中,有的属性是int,boolean这些类型,它们是有默认值的,当前端不转它们时,后端也会接收到默认值,如int为0,boolean为false,这就给后端代码带来不确定性;比如要有个put更新用户的方法,有个用户对象如下
  1. @Data
  2. public class UserAccountResponse implements Serializable {
  3.         private String id;
  4.         private String name;
  5.         private boolean isDefault;
复制代码
当前端只put更新name时,如果不传isDefault,后端接收到的是isDefault=0,这是不对的,会出现数据被覆盖的问题;基于这个问题我们需要将boolean改成封装类型Boolean,当前端不传时,它是为null的;而在lombok中,boolean和Boolean类型天生的 getter和setter方法名是不同的,这导致了返回前端的属性名不同。
lombok中boolean和Boolean

对于上面的例子,在isDefault被返回前端时,它的名称分别是
为Boolean类型属性进行适配

使用 @Setter(AccessLevel.NONE)和@Getter(AccessLevel.NONE)  并手动实现 getter 和 setter
  1. @Data
  2. public class UserAccountResponse implements Serializable {
  3.         private String id;
  4.         private String name;
  5.         @Setter(AccessLevel.NONE)
  6.         @Getter(AccessLevel.NONE)
  7.         private boolean isDefault;
  8.         public Boolean getDefault() {
  9.                 return isDefault; // 自定义 getter 方法
  10.         }
  11.         public void setDefault(Boolean isDefault) {
  12.                 this.isDefault = isDefault;
  13.         }
复制代码
这样再返回前端时,就是只有一个default字段了,不是与之前boolean产生冲突,固然,如果之前你使用的一直是Boolean就不会有这个问题,本文章只使用于类型从boolean修改为Boolean的环境
  1. {
  2.     "code": "200",
  3.     "data": [
  4.         {
  5.             "id": "57345f65bb064a9a95327e35a5034905",
  6.             "default": true,
  7.             "name": "normal"
  8.         }
  9.     ]
  10. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4