使用Lombok时JavaBean在前后端交互时字段大小写不一致的问题

Lombok在前后端交互时因为JavaBean中get/set导致字段大小写不一致的问题,一般常见的字段遵循驼峰命名没有任何问题,但一些特殊的字段比如cId传到前端却变成了cid,导致字段不一致,赋值出现问题,归根结底是get/set出现了问题。

1、JavaBean的生成规则

JavaBean定义:一种JAVA语言写成的可重用组件,通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。

主要规则:

  1. 必须有 一个无参构造且为public
  2. 必须为公共类 public
  3. 不应有公共实例属性,属性都为private,且以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。
  4. 可通过IDE(Eclipse、IDEA) 为属性生成getter/setter 方法
  5. 如果属性名的第二个字母大写,那么该属性名直接用getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名uName,方法是getuName/setuName。
  6. 如果属性中字母均是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。
  7. 如果首字母大写,也是属性名直接用作 get/set 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。
   private  Integer cId;
   //get/set
    public Integer getcId() {
        return cId;
    }
    public void setcId(Integer cId) {
        this.cId = cId;
    }
    //最后得到cId

2、Lombok的生成规则

一句话get/set都会将首字母大写

@Data
public class JavaBean{
	private  Integer cId;
	//lombok帮你生成的
 	public Integer getCId() {
        return cId;
    }
    //lombok帮你生成的
    public void setCId(Integer cId) {
        this.cId = cId;
    }
    //最后通过lombok得到cid
}

3、如何解决问题

前后端字母大小写不一致问题归根结底就是你在项目中使用lombok了原因。解决方案有两个:

方法一: 去掉lombok中的@Data注解,手动导入get/set方法

方法二:在JavaBean中通过@JsonProperty强制定义

     @JsonProperty("cId")
    //本来得到的是cid,通过这个注解可以强制得到cId
    private  Integer cId;

4、总结

细节决定一切!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值