Loading

Lombok @Data生成get set方法问题

问题

今天使用EasyExcel进行导出时,发现有个属性明明赋值了但是导出文件中没有显示出来,类大致如下

@Data
public class WithdrawExportDTO {

    private String sCloudTrade;

    private String sCloudTradePlatformVoucher;

    private String sCloudTradeOkCard;

    private String sCloudTradePoints;

    private String sCloudCashVoucher;
}

排查

起初以为是没有赋值成功,断点调试发现在EasyExcel写入前是有值的,如下图所示

断点进入write方法
发现在com.alibaba.excel.write.executor.ExcelWriteAddExecutor#addJavaObjectToExcel方法中这个属性对应的列在写入时被continue掉了,如下图所示

很明显这个条件不满足才会被continue掉,原因是beanMap中首字母变成了大写

原因

新建测试类,当自己生成get方法时首字母为小写

使用cglib生成beanMap正常

当使用Lombok时

很显然lombok在生成nXxx这种属性时会生成为getNXxx导致cglib获取为大写类型

解决方案

自己生成get set方法

posted @ 2020-12-04 17:17  ingxx  阅读(1708)  评论(0编辑  收藏  举报