工作记录------@Accessors(chain = true)引起的BUG,Excel导入时获取不到值
如题所示
背景:在进行文件excel文件导入时,发现实体类获取到的属性值都为null。
框架:com.alibaba.excel 2.2.0的版本。
结论:首先说下结论
如果能顺利导出,但是当excel导入时,实体类对应属性为null时,一般存在两种情况
1.@ExcelProperty(value = “xxx”, index = 0)
表格名称或者索引位置不一致引起,此时调整即可
2.接受excel的实体类存在@Accessors(chain = true)的注解,此时需要将实体类上的注解删除。
@Accessors(chain = true)注解有什么用?
当实体类没有该注解时,编译后的文件,set方法的返回值是void。
public void setActive(final Integer active) {
this.active = active;
}
当实体类增加过@Accessors(chain = true)之后,看编译后的文件,能够发现set方法返回的就是当前对象
public BaseProcedure setProcedureName(final String procedureName) {
this.procedureName = procedureName;
return this;
}
结语
@Accessors(chain = true)能够为当前对象提供链式访问的能力,简化代码。
但也会与一些插件出现不兼容的现象。使用时需要注意。
User user=new User().setAge(27).setName("kevin");//返回对象