我正在使用JdbcCursorItemReader的实例从数据库中读取我的数据。有没有一种简单的方法可以重置光标位置?我想我可以实现一个自定义步骤侦听器来始终重置该值,但我更喜欢配置选项。
如果重新启动失败的作业,当再次执行失败的步骤时,我需要读取所有行。此刻,在处理了一个块之后,光标位置通过键JdbcCursorItemReader.read.count
保持不变。重新启动后不会再次读取成功处理的行。
我的工作配置看起来像这样:
<batch:job id="myJob">
<batch:step id="step1" next="step2">
<batch:tasklet>
<batch:chunk commit-interval="1000"
reader="myJdbcCursorItemReader"
processor="step1Processor"
writer="myJdbcBatchItemWriter" />
<batch:transaction-attributes
isolation="READ_COMMITTED" propagation="REQUIRED" timeout="60" />
</batch:tasklet>
</batch:step>
[...]
<bean id="myJdbcCursorItemReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select ..." />
<property name="rowMapper">
<bean class="foo.bar.MyRowMapper" />
</property>
</bean>