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

相关推荐
曹牧9 分钟前
Java:强类型转换
开发语言·python
wuguan_12 分钟前
C#之线程
开发语言·c#
LXS_35715 分钟前
STL - 函数对象
开发语言·c++·算法
木千20 分钟前
Qt5.15.2安装MSVC2019编译器
开发语言·qt
仟濹23 分钟前
【Java加强】1 异常 | 打卡day1
java·开发语言·python
去往火星27 分钟前
Qt6 CMake 中引入 Qt Linguist 翻译功能
开发语言·qt
阿猿收手吧!30 分钟前
【C++】atmoic原子操作与并发安全全解析
开发语言·c++·安全
AllData公司负责人35 分钟前
【亲测好用】实时开发平台能力演示
java·c语言·数据库
pcm12356736 分钟前
设计C/S架构的IM通信软件(3)
java·c语言·架构
zz345729811336 分钟前
C语言基础概念7
c语言·开发语言