一、问题:
实体类中日常使用@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的一些特殊情况(看具体实现策略)
- 若属性名的第一个字母小写,第二个字母大写
IDEA自动生成的bean将属性名直接用于setter/getter
Lombok生成的bean会将首字母变成大写 - 若前两个字母均为大写
IDEA自动生成和Lombok一样,将属性名直接用于setter/getter - 若boolean类型属性名以is开头
IDEA自动生成和Lombok一样,getter会去掉get,setter会去掉is