【笔记】记一次easyExcel中注解ExcelProperty映射字段赋值无效问题

背景

最近在开发一个导入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出现。

相关推荐
春生黎至1005几秒前
Python列表
开发语言·python
lalala_Zou3 分钟前
虾皮后端一面
java·面试
我没想到原来他们都是一堆坏人6 分钟前
java 动态代理
java·开发语言·动态代理
10001hours18 分钟前
C语言第23讲
c语言·开发语言·算法
h汉堡18 分钟前
类和对象(二)
开发语言·数据结构·c++·学习
Coding_Doggy24 分钟前
java面试day5 | 消息中间件、RabbitMQ、kafka、高可用机制、死信队列、消息不丢失、重复消费
java·开发语言·面试
GreatSQL社区26 分钟前
GreatSQL 优化技巧:最值子查询与窗口函数相互转换
java·服务器·数据库
全栈工程师修炼指南30 分钟前
DBA | MySQL 数据库基础数据操作学习实践笔记
数据库·笔记·学习·mysql·dba
emplace_back34 分钟前
C# 主窗口 单例 唯一进程 互斥锁
开发语言·c#
励志不掉头发的内向程序员1 小时前
【Linux系列】让 Vim “跑”起来:实现一个会动的进度条
linux·运维·服务器·开发语言·学习