0

我正在使用一个块来读取文件并将内容插入数据库,表中的一列需要输入文件中的记录号。有没有办法在传递给 ItemProcessor 的对象中获取它或从 ItemProcessor 中获取它?

4

3 回答 3

0

我最终使用 ItemReadListener 在 afterRead 方法中获取 StepContext 指标,并使用当前读取计数更新我的 Object 读取。

于 2020-05-18T12:52:12.730 回答
0

JBeretBeanIOItemReader将所有操作委托给底层org.beanio.BeanReader. 因此,如果您需要输入中的信息,那么您需要配置 BeanIO 映射文件以将其包含在BeanReader.

如果您需要访问累积统计信息,您可以查看 ,您可以在javax.batch.runtime.context.StepContext#getMetrics其中访问各种统计信息:

        READ_COUNT
        WRITE_COUNT
        COMMIT_COUNT
        ROLLBACK_COUNT
        READ_SKIP_COUNT
        PROCESS_SKIP_COUNT
        FILTER_COUNT
        WRITE_SKIP_COUNT
于 2020-04-10T18:31:28.557 回答
0

BeanReader.getRecordCount()javadoc 将其描述为:

    /**
     * Returns the number of records read from the underlying input stream for the
     * most recent bean object read from this reader.  This typically returns 1
     * unless a bean object was mapped to a record group which may span
     * multiple records.
     * @return the record count
     * @since 2.0
     */
    public int getRecordCount();

如果它通常返回 1,那么我看不出它有什么用处。

如果您想知道阅读器已阅读的记录数,即第 5 条或第 6 条记录,则可以使用READ_COUNT如上所述的批处理指标。

于 2020-05-16T22:11:09.403 回答