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

相关推荐
今天AI了吗6 小时前
Spring AI 框架实战:Java 后端集成大模型的架构设计与工程落地
java·人工智能·python·spring·机器学习
code bean7 小时前
【C#】 主构造函数(Primary Constructors)的来龙去脉
开发语言·c#
hexu_blog7 小时前
springboot3集成shardingsphere4.0 分表分库
java·spring boot·mybatis
乐观的Terry7 小时前
9、发布系统-Webhook自动发布
java·spring boot·spring·spring cloud·mybatis
小柯南敲键盘7 小时前
AI批量翻译Temu商品标题的Python实践
开发语言·人工智能·python
PH = 77 小时前
SpringBoot使用自动装配编写Start包
java·spring boot·后端
逆境不可逃7 小时前
Java JUC 同步工具类一次讲透:CountDownLatch、CyclicBarrier、Semaphore、Phaser 与 AQS 共享模式
java·开发语言·python
大尚来也7 小时前
项目上线前必须检查的清单:避开线上重大事故
开发语言
q27551300427 小时前
AS717 Type-C转DP 8K方案外维少 AS717电路图
c语言·开发语言
xlq223227 小时前
高并发服务器day5
java·服务器·数据库