問題
今天使用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方法
