五分钟了解@ExcelIgnoreUnannotated注解

@ExcelIgnoreUnannotatedEasyExcel 框架中的一个注解,用于控制 Excel 导入/导出时对实体类字段的处理方式。它的作用如下:


核心功能

忽略未标注 @ExcelProperty 的字段

  • 当添加 @ExcelIgnoreUnannotated 到类上时,EasyExcel 会 跳过所有未显式标注 @ExcelProperty 的字段 ,仅处理被 @ExcelProperty 明确标记的字段。

  • 如果没有此注解,EasyExcel 默认会尝试处理实体类中的所有字段(包括未标注的字段)。


使用场景

  1. 精确控制导出的字段

    只导出标记了 @ExcelProperty 的字段,忽略其他字段(即使它们是 public 或有无参 getter 方法)。

  2. 避免意外数据泄露

    防止因未显式忽略敏感字段而导致数据被意外导出。

  3. 提升性能

    减少反射扫描的字段数量,加快导入/导出速度。

代码示例

复制代码
@ExcelIgnoreUnannotated // 仅处理带 @ExcelProperty 的字段
public class User {
    @ExcelProperty("姓名")
    private String name;
    
    @ExcelProperty("年龄")
    private Integer age;
    
    private String password; // 不会被导出/导入
}

对比默认行为

行为 @ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
未标注 @ExcelProperty 的字段 会被处理(默认按字段名匹配 Excel 列) 被忽略
需要导出的字段 必须显式标注 @ExcelIgnore 来忽略 只需标注 @ExcelProperty 明确指定

注意事项

  1. @ExcelProperty 配合使用

    如果类上添加了 @ExcelIgnoreUnannotated,则必须通过 @ExcelProperty 明确指定需要处理的字段,否则这些字段会被完全忽略。

  2. 优先级高于其他注解

    即使字段有其他注解(如 @ColumnWidth),只要没有 @ExcelProperty,依然会被忽略。

  3. 适用于复杂对象

    对于嵌套对象,该注解仅作用于当前类的字段,不会影响嵌套类自身的注解规则。

常见问题

Q:如果忘记加 @ExcelProperty 会怎样?

A:字段会被完全忽略,可能导致导出数据缺失或导入时字段为 null

Q:如何导出所有字段(恢复默认行为)?

A:直接移除 @ExcelIgnoreUnannotated 注解即可。

通过使用 @ExcelIgnoreUnannotated,可以更严格地控制 Excel 导入/导出的字段范围,避免因遗漏注解而导致的数据问题。

相关推荐
vx-程序开发3 小时前
springboot在线装修管理系统-计算机毕业设计源码56278
java·c语言·spring boot·python·spring·django·php
大傻^3 小时前
Spring AI Alibaba 可观测性实践:AI应用监控与链路追踪
java·人工智能·后端·spring·springaialibaba
Dxy12393102163 小时前
js如何把字符串转数字
开发语言·前端·javascript
云烟成雨TD3 小时前
Spring AI Alibaba 1.x 系列【1】阿里巴巴 AI 生态
java·人工智能·spring
诗人不写诗3 小时前
spring是如何组织切面的
java·后端·spring
_饭团3 小时前
字符串函数全解析:12 种核心函数的使用与底层模拟实现
c语言·开发语言·学习·考研·面试·蓝桥杯
Larry_Yanan3 小时前
Qt网络开发之基于 QWebEngine 实现简易内嵌浏览器
linux·开发语言·网络·c++·笔记·qt·学习
2401_831824963 小时前
嵌入式C++驱动开发
开发语言·c++·算法
qingcyb3 小时前
重复 id 对应的多个对象
开发语言·python
li星野3 小时前
[特殊字符] 模拟试卷一:C++核心与系统基础(90分钟)答案版
开发语言·c++·算法