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

Lombok与JavaBean之间不同名属性拷贝的思考 由于最近刚步入工作,比较忙,很长时间没有去更新博客与整理知识了。 今天我们来聊一聊一些开发中常见但是又觉得比较恶心的代码,如何去处理这些问题呢。浏览过这篇博文之后,大家也可以提出自己的想法,是不是还有更好的解决方案。 目录 1、lombok  1.1 安装 1.2 使用 2、Bean之间拷贝不同名字段 1、lombok   开发中,虽然我们使用IDE可以快捷键生成get/set/t... 阅读详情

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

细节决定一切!

多核异构处理器核间通信:从共享内存到RPMsg协议的实战解析 在多核异构处理器架构中,核间通信是实现高效协同计算的核心技术。其基本原理是通过共享内存作为数据交换的物理媒介,配合硬件信号机制实现同步与通知。从技术价值看,它解决了不同架构核心间的数据共享与指令协同问题,是释放异构计算潜力的关键。在应用场景上,该技术广泛应用于智能物联网设备、汽车电子和工业控制等领域,用于连接高性能应用处理器与实时微控制器。本文以典型的ARM Cortex-A与Cortex-M组合为例,深入剖析了基于共享内存和RPMsg协议的通信机制,涵盖了从硬件基础到软件协议栈的完整实现链路,并提供了针对 阅读详情

相关推荐

2.1 SRv6 TE Policy

SRv6 TE Policy是在SRv6技术基础上发展的一种新的隧道引流技术。SRv6 TE Policy路径表示为指定路径的段列表(Segment List),称为SID列表(Segment ID List)。每个SID列表是从源到目的地的端到端路径,并指示网络中的设备遵循指定的路径,而不是遵循IGP计算的最短路径。如果数据包被导入SRv6 TE Policy中,SID列表由头端添加到数据包上,网络的其余设备执行SID列表中嵌入的指令。

m0_70976024的博客 1237

SpringBoot实体类属性前后端大小写不一致问题

  在springboot中遇到前后端大小写不一致的问题,问题详情如下:   实体类ZTreeNode中创建了pId,但前端在接收时却变成了pid,大小写居然不一致。   查了下才知道是Lombok的@Data注解的坑。Lombok 生成的get/set方法 与实际上get/set方法生成的规则不一致,Lombok生成的是getPId、setPId,导致拿到的就是小写了,实际上应该是getpId、setpId。   至此,我们可以去掉@Data注解,自己生成get/set方法,也可以在ztree中修改pId

学而不思则罔,思而不学则殆 2585

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 897

lombok不区分首字母大小写的问题,属性名首字母小写第二个字母大写导致无法解析参数

lombok不区分首字母大小写的问题,属性名首字母小写第二个字母大写导致无法解析参数

qq_45801168的博客 1121

5分钟搞懂知识抽取:如何把非结构化数据变成知识图谱的宝藏?

本文通过一个电商评论分析实战案例,详细解析了如何利用spaCy、Neo4j等工具,将非结构化文本数据转化为结构化知识图谱的完整流程。文章重点阐述了知识抽取的核心步骤,包括命名实体识别、关系抽取以及知识存储与查询,帮助读者快速掌握将数据转化为知识宝藏的关键技术。

weixin_29054245的博客 235

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Models

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),大大减少需要的算力。在RGB空间:编码器encoder:,将x压缩成低维表示解码器decoder: D,将低维表示z还原成原始图像空间。1. 加入Autoencoder(上图中左侧红色部分),使得扩散过程在latent space下,提高图像生成的效率;

weixin_57974242的博客 1万+

Lombok首字母小写,第二个字母大写造成的参数无法接收问题

1.问题现象: 如果VO实体用@Data注解生成get/set,对于首字母小写,第二个字母大写的成员变量,@RequestBody无法完成自动映射,取值为null 2.问题实质: Lombook的@Data注解和Spring的Jackson对于get/set的生成方式不同 3.问题原因: private String xIndex; 对于这种首字母小写,第二个字母大写的成员变量,Lombook生成的get/set...

持之以恒,方得始终 5006

lvds接口_LVDS,接口,时序讲解,非常好的文章

欢迎FPGA工程师加入官方微信技术群点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群1.1.1 LVDS接口分类1.1.1.1 单路6bit LVDS这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit LVDS接口。1.1.1.2 双路6bit LVDS这种接口电...

weixin_39639286的博客 1906

lombok不区分大小写引起的问题

import lombok.Data; @Data public class TestDTO { private Integer pId; } 如上代码所示,在这个DTO中,传递如下参数,但是后端无法接收 { "pId":1 } 原因:使用lombok的@Data注解后,生成的get/set方法如下 // 参数名的首字母和第二个字母都变成了大写 getPId(); setPId() 而在JavaBean规范中,有如下规范,所以这里方法名应为getpId和setpId 如果属性名的第...

生活不息,奋斗不止 2182

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2983

无人机+消防车:高楼灭火系统技术详解

传统的消防设备,如登高车、车载水枪、水炮和高喷车,在50米以上高度的火源面前往往力不从心,100米以上高层火灾则更加依赖消防员“爬楼”灭火,效率低下且风险极高。消防水带:采用聚乙烯丝材质,超轻、耐腐蚀、强度高,能够携带大量水或灭火泡沫进行高空喷水灭火作业。“无人机+消防车”高楼灭火系统主要由消防车和无人机两部分组成,通过机车联动实现高效灭火。高效灭火:无人机能够快速到达高层建筑顶部或指定位置进行灭火作业,大大提高了灭火效率。空压泡沫系统:配备超大水箱,支持长时间供应灭火泡沫,满足无人机灭火剂的需求。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1673

Lombok的坑@Data,后台返回给前端json字段的大小写驼峰命名问题

Lombok的坑@Data,后台返回给前端json字段的大小写驼峰命名问题

灿的博客 7275

《备考信息系统项目管理师》 - 专栏介绍和目录

本专栏会持续详细梳理软考高级信息系统项目管理师(高项)的考点、所有历年真题(包括综合知识、案例分析、论文)等,有论文专项,预测模拟题等内容。需要的可以先订阅下哦。

数据知道的博客 2万+

后台返回给前端json字段的大小写问题,Lombok的坑@Data,@Getter

Lombok的@Data注解踩坑,@Setter的大小写问题 以前在处理前端请求的实体类的时候,都是用Lombok的@Data注解对实体类进行getter、setter以及toString的声名,今天处理实体类的时候,发现生成的setter方法和Java Bean的命名规则不一致。(@Data的作用是为我们定义的字段添加Lombok的@ToString、@EqualsAndHashCode、 @Getter方法、@RequiredArgsConstructor 和 为非final字段添加@Setter) 我

qq_43842093的博客 2373

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

后台返回给前端json字段的大小写问题,Lombok的坑

Lombok的@Data注解踩坑,@Setter的大小写问题 以前在处理前端请求的实体类的时候,都是用Lombok的@Data注解对实体类进行getter、setter以及toString的声名,今天处理实体类的时候,发现生成的setter方法和Java Bean的命名规则不一致。(@Data的作用是为我们定义的字段添加Lombok的@ToString、@EqualsAndHashCode、 @Getter方法、@RequiredArgsConstructor 和 为非final字段添加@Setter) 我

cristianoxm的博客 1316

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

get_set驼峰原装_lombok注解引发的字段问题

前言 使用lombok固然能加快开发,但是使用的不恰当,可能会给我们造成一些意外的伤害,这里我将之前遇到的字段伤害做个简单的总结。 数据库设计的时候,一定要考虑好字段的名称,让它和json一致 ,比如我的数据库中设计的为 IsTmail ,那么我使用的lombok字段名 为 IsTmail(因为数据库映射是完全根据字段对应的,与json没有关系,但是我们以后设计尽量和json一致) lombok...

HealerJean梦想博客 5603

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Lombok首字母小写,第二个字母大写的问题

最近在和前端对接接口的时候,发现后端接口返回给前端的一个字段大小写有问题,具体如下。使用的开发框架及版本:对象简化后如下: 预期返回结果:,实际返回结果:。针对首字母小写,第二个字母大写的这种驼峰命名时,使用@Data注解生成的getter和setter方法分别是: 而正常场景下及Spring中对象的getter和setter方法应该是: 也就是说Lombok与Spring针对这种首字母小写,第二个字母大写的对象的解析是不同的,而这也就自然而然影响到默认的Jackson的解析,导致返回给前端的属

z69183787的专栏 3005

SpringBoot中使用Lombok注解因JavaBean规范与JSON序列化规范差异导致字段赋值失败问题分析及解决方案

Lombok注解生成的getter/setter方法与JSON默认命名策略存在冲突,当字段首字母小写且第二个字母大写时(如aTypeId),Lombok会生成首字母大写的getATypeId()方法,导致JSON反序列化失败。解决方案包括:1)使用@JsonProperty注解显式指定字段名;2)配置Lombok生成小写字母开头的getter/setter;3)调整字段命名规则。推荐使用第一种方式,能保持原有命名习惯并确保正确反序列化。

BADAO_LIUMANG_QIZHI的博客 607

springboot中自定义JavaBean返回的json对象属性名称大写变小写问题

springboot中自定义JavaBean返回的json对象属性名称大写变小写问题

忆~遂愿的博客 4869

Lombok @Data 与 Jackson 字段反序列化规则不一致

建议项内容字段命名password保持规范DTO、VO、PO 都遵循 JavaBean 标准避免问题不要随意首字母大写,Jackson/Lombok 默认行为不兼容统一工具@Data搭配时需特别注意字段名规范。

fqlya的博客 426

Lombok遇到的问题

常用的几个注解:@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法@AllArgsConstructor : 注在类上,提供类的全参构造@NoArgsConstructor : 注在类上,提供类的无参构造@Setter : 注在属性上,提供 set 方法@Getter : 注在属性上,提供 get 方法@EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法。

yubin1285570923的博客 1714

MyBatis学习笔记(四)Lombok_resultMap(JavaBean属性名和数据库中的字段名称不一致;一对多多对一的查询)

上一篇:MyBatis学习笔记(三)生命周期_解决JavaBean和数据库字段不一致问题_分页_使用注解开发_mybatis执行流程 安装插件 导包:maven法

floracuu的博客 671

Lombok简化JavaBean开发

文章目录一.安装Lombok1.为什么要导入Lombok依赖2.为什么要在idea中安装Lombok插件二.Lombok中的相关注解1. @Getter/@Setter2. @ToString3. @AllArgsConstructor4. @RequiredArgsConstructor5. @NoArgsConstructor6. @EqualsAndHashCode7. @NonNull8. @Data9. @Slf4j三.Lombok的优缺点 一.安装Lombok 1.为什么要导入Lombok依赖

MrYushiwen的博客 828

关于javabean属性的命名规范和lombok引起前端对象属性不显示

问题描述:使用Freemarker模板引擎作为前端页面,使用插值表达式获取对象中的属性时,明明对象中存在该属性,但{$对象.属性名}的时候却为空。 设计知识: 一、关于Freemarker获取对象中属性不显示 属性没有getter方法或者找不到getter方法。Freemarker从对象中取属性,是通过属性名去推getter方法,找到就能拿到,找不到就为null。 对象是内部类的对象,变成普通的...

qq_42846022的博客 1178

lombok.Data引发的问题

点击关注我的博客原文 大家应该都用过lombok,它是个好东西,它可以为我们实体类自动添加getter/setter方法、构造器以及toString等方法,它的使用方法和好处不是这里讨论的重点。我这里要说明的是使用它的@Data方法自动生成getter/setter后,引发的问题,比如我有个实体类: @Data public class Test { private Integer...

u012105931的博客 9843

Lombok详细教程及idea中lombok插件的安装

一、背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,那java中有没有一种方式能够避免这种重复的劳动呢?答案是有,我们来看一下下面这张图,右面是一个简单的JavaBean,只定义了两个属性...

zhangmiaoping23的专栏 6596
下一篇: 多线程与异步
ADCQprogrammer
博客等级 码龄7年 4粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值