五分钟了解@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 导入/导出的字段范围,避免因遗漏注解而导致的数据问题。

相关推荐
DCTANT9 分钟前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
Touper.19 分钟前
SpringBoot -- 自动配置原理
java·spring boot·后端
黄雪超28 分钟前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice35 分钟前
对象的finalization机制Test
java·开发语言·jvm
思则变1 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
lijingguang1 小时前
在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)
开发语言·c#
¥-oriented1 小时前
【C#中路径相关的概念】
开发语言·c#
CoderCodingNo2 小时前
【GESP】C++四级考试大纲知识点梳理, (7) 排序算法基本概念
开发语言·c++·排序算法
恋猫de小郭2 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
望获linux2 小时前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件