背景
最近在开发一个导入excel文件解析数据并入库的功能,导入过程中出现一个BUG:后端映射实体字段pType没有被赋值,但是导入的excel源文件是有数据。
定位问题
经过debug源码发现最终创建对象并赋值使用的是net.sf.cglib.beans.BeanMap类中的create方法,BeanMap中创建实体对象并赋值使用类中字段的setter方法,其中pType字段使用的Setter方法为setpType,但是lombok.Data注解的类的字段pType的setter方法为setPType,所以导致最终没有被赋值。
解决方案
方式1:将pType字段改成projectType字段名,使用lombok.Data注解。
@ExcelProperty(value = "项目类型*")
private String projectType;
方式2:手动添加pType的Setter和Getter方法。
public String getpType() {
return pType;
}
public void setpType(String pType) {
this.pType = pType;
}
最后
在使用@ExcelProperty注解标记字段的时候,该字段最好命名标准和规范,比如以上pType命名如果标准化为projectType可以避免此类BUG出现。