Lombok中@Data的坑

发布时间 2023-12-14 10:43:42作者: Jackpot_ABC

一、问题:

实体类中日常使用@Data注解来生成getter/setter方法,有个字段为xPoint的属性,在使用MapStruct映射该字段的时候,发现无法映射到该字段

@Mapping(target = "x", source = "xPoint")

二、分析

@Data对该字段生成的getter方法为

public String getXPoint(){
	return this.xPoint;
}

MapStruct对于该字段所调用的getter方法为

xxxEntity.getxPoint();

原因在于两者对于javaBean命名规范的实现不同

三、解决

@Mapping(target = "x", source = "XPoint")

这样Mapstruct使用的getter方法即为

xxxEntity.getXPoint();

================================================================================================

关于javaBean的一些特殊情况(看具体实现策略)

  1. 若属性名的第一个字母小写,第二个字母大写
    IDEA自动生成的bean将属性名直接用于setter/getter
    Lombok生成的bean会将首字母变成大写
  2. 若前两个字母均为大写
    IDEA自动生成和Lombok一样,将属性名直接用于setter/getter
  3. 若boolean类型属性名以is开头
    IDEA自动生成和Lombok一样,getter会去掉get,setter会去掉is