跳到主要内容

ItemReader

QWen Plus 中英对照 ItemReader ItemReader

虽然概念简单,但 ItemReader 是从许多不同类型的输入提供数据的手段。最通用的例子包括:

  • 平文件:平文件项读取器从通常描述记录的平文件中读取数据行,这些记录的字段由文件中固定位置的数据或由某些特殊字符(如逗号)分隔定义。

  • XML:XML ItemReaders 独立于用于解析、映射和验证对象的技术处理 XML。输入数据允许根据 XSD 模式验证 XML 文件。

  • 数据库:访问数据库资源以返回可以映射到对象的结果集以便进行处理。默认的 SQL ItemReader 实现调用一个 RowMapper 来返回对象、在需要重新启动时跟踪当前行、存储基本统计信息,并提供一些将在后面解释的事务增强功能。

还有更多可能性,但本章我们专注于基本的 ones。所有可用的 ItemReader 实现的完整列表可以在 附录 A 中找到。

ItemReader 是用于通用输入操作的基本接口,如下所示的接口定义:

public interface ItemReader<T> {

T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;

}
java

read 方法定义了 ItemReader 最核心的契约。调用它会返回一个项目,如果没有更多项目则返回 null。一个项目可以表示文件中的一行、数据库中的一行或者 XML 文件中的一个元素。通常期望这些会被映射到一个可用的领域对象(例如 TradeFoo 或其他对象),但在契约中并没有强制要求这样做。

预计 ItemReader 接口的实现是单向向前的。然而,如果底层资源是事务性的(例如 JMS 队列),那么在回滚情况下调用 read 可能在后续调用中返回相同的逻辑项。还值得注意的是,ItemReader 无法处理项目时不会引发异常。例如,配置了返回 0 结果的查询的数据库 ItemReader 在第一次调用 read 时将返回 null