lombok~制止Boolean属性使用默认的方法

打印 上一主题 下一主题

主题 1753|帖子 1753|积分 5259

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言

前端与后端在进行交互时,前端传的对象中,有的属性是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 返回到前端为 default
  • 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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表