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

笔记:记一次使用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选一个改,只要正常返回导出类对象,问题就解决了

http://www.xdnf.cn/news/2003.html

相关文章:

  • 计算机视觉各类任务评价指标详解
  • 8. 深入Spring AI:自定义Advisor
  • 反爬策略应对指南:淘宝 API 商品数据采集的 IP 代理与请求伪装技术
  • OceanBase 复合索引指南
  • 项目maven版本不一致 导致无法下载
  • 人工智能与机器学习:Python从零实现性回归模型
  • 从“能耗大户”到“节能标杆”:安科瑞助力污水处理厂绿色转型
  • 告别进度失控:用燃尽图补上甘特图的监控盲区
  • Windows server:
  • [OS_8] 终端和 UNIX Shell | 会话和进程组 | sigaction | dash
  • 多模态大语言模型(MLLM)- kimi-vl technical report论文阅读
  • 航电系统之自适应航电修复机制篇
  • Flowable7.x学习笔记(十四)查看部署流程Bpmn2.0-xml
  • TestBrain开源程序是一款集使用AI(如deepseek)大模型自动生成测试用例、和测试用例评审、RAG知识库管理的web平台系统
  • 解读《地方标准制定负面清单》与安徽标准复审新规
  • 蜜罐管理和数据收集服务器:Modern Honey Network (MHN)
  • 成熟的前端vue vite websocket,Django后端实现方案包含主动断开websocket连接的实现
  • 企业部署Power BI 报表服务器,在第三方系统嵌套该报表服务器,并实现单点登录
  • 【数据可视化艺术·应用篇】三维管线分析如何重构城市“生命线“管理?
  • 基于Java,SpringBoot,Vue,HTML宠物相亲配对婚恋系统设计
  • 【Python数据库与后端开发】从ORM到RESTful API
  • Dubbo(76)Dubbo的服务注册与发现机制是怎样的?
  • c#接口_抽象类_多态学习
  • RabbitMQ 复习总结
  • 【MFC】 VS2022打开低版本的MFC,双击.rc文件,DIalog加载失败,页面弹窗fatal error RC***:cannot open*****
  • Matplotlib高阶技术全景解析(续):动态交互、三维可视化与性能优化
  • 大模型助力嘉兴妇幼:数据分类分级的智能化飞跃
  • 7.11 Python CLI开发实战:API集成与异步处理核心技术解析
  • flume整合kafka
  • electron-builder 打包安装与启动手动安装,最终解决方案,之前的文章与其他的人都不用看了。