栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用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、总结

细节决定一切!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号