当前位置: 首页 > news >正文

笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)

笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)

PS:解决方法在最后。

因为帮别人做一个导出,跟我说查询已经做好,正常按着查询写个导出,那不是简简单单的事情,但是,问题出现了,写完导出之后,发现居然报错了!报错如下:
在这里插入图片描述
字典键值转换居然报错了!反复看导出类配置,但是完全看不出有什么问题,心态逐渐爆炸,无奈,debug看看源码吧。

    @ExcelProperty(value = "发货状态", converter = ExcelDictConvert.class)@ExcelDictFormat(dictType = "send_status")private String orderSendStatus;

首先从doWrite开始:
在这里插入图片描述
点开excelWriter->excelBuilder->context->clazz->reflectionData->referent->declaredFields,可以看到此时的class还是正常的。
在这里插入图片描述
一直往下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这时都是正常的,直到addJavaObjectToExcel方法,问题出现了:
在这里插入图片描述
打开excelContentProperty这个对象的属性,可以看到注解属性不见了!见鬼了!
在这里插入图片描述
如果眼神好的话,想必已经发现问题了,可惜我眼神不好, 来来回回看了几遍才发现问题,两次clazz类的id不一样了,前面是9136,后面是9135,但是正常不会这样,因为同一个java对象传参是不会变的。再仔细看看,发现这里面的对象是实体类,而不是导出类!

但是我记得明明查询用的是导出类,怎么会变成实体类。
在这里插入图片描述
但是再次debug看数据实际上确实是实体类:
在这里插入图片描述

再往下找,发现问题所在:
在这里插入图片描述
原来是查询的时候使用的映射是实体类,所以导致读取不到@ExcelDictFormat,因为压根就不是导出类,怎么能读取到注解。。。

解决方法也很简单:
1、把xml映射map路径从实体类改为导出类
2、或者把resultMap直接改成resultType,值为导出类路径
1和2选一个改,只要正常返回导出类对象,问题就解决了

相关文章:

  • wireshark从HEX转储导入使用方法
  • Uni-App 多端电子合同开源项目介绍
  • React类组件与React Hooks写法对比
  • STM32 I2C总线通信协议
  • Gartner魔力象限(Gartner Magic Quadrant)
  • 统计文件中单词出现的次数并累计
  • van-field组件设置为textarea属性被软键盘遮挡问题
  • Qt基础009(HTTP编程和QJSON)
  • Linux阻塞与非阻塞I/O:从原理到实践详解
  • js中get,set用法
  • 深度学习 视觉处理(CNN) day_02
  • 力扣-206.反转链表
  • SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎
  • 在 Spring Boot 项目中如何使用索引来优化 SQL 查询?
  • 再见,物理删除!MyBatis-Plus @TableLogic 优雅实现逻辑删除
  • 【ESP32S3】 下载时遇到 libusb_open() failed 解决方案
  • python如何取消word中的缩进
  • Unity3D IK解算器技术分析
  • 基于AIGC的3D场景生成实战:从文本描述到虚拟世界构建
  • BT150-ASEMI机器人率器件专用BT150
  • 江苏、安徽跨省联动共治“样板间”:进一扇门可办两省事
  • “网红”谭媛去世三年:未停更的账号和困境中的家庭
  • 我国首次发布铁线礁、牛轭礁珊瑚礁“体检”报告,菲炮制言论毫无科学和事实依据
  • 南方医科大学原副校长宁习洲主动投案,接受审查调查
  • 小马智行彭军:今年是Robotaxi量产元年,有望3年后盈亏平衡
  • 著名文学评论家、清华大学中文系教授蓝棣之逝世