Spring Batch JdbcCursorItemReader向后移动光标

时间:2018-05-20 14:46:05

标签: spring-batch

在春季批处理中,JdbcCursorItemReader处理ResultSetTYPE_FORWARD_ONLY

在我的情况下,我需要将光标指向1行,因此我想设置TYPE_SCROLL_SENSITIVE,以便我可以返回。

知道如何在春季批次或某些解决方法中做到这一点?

<bean id="databaseItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
            value="select * from document udd, field uff where uff.docid = udd.docid AND uff.field_name IN ('address','contractNb','city','locale','login','mobile','name','phone') ORDER BY udd.docid, uff.field_name ASC" />
        <property name="rowMapper">
            <bean class="com.migration.springbatch.UDocumentResultRowMapper" />
        </property>
        <property name="verifyCursorPosition" value="false"/>
    </bean>

1 个答案:

答案 0 :(得分:1)

Spring Batch中ItemReader的合同只是转发,JdbcCursorItemReader是根据此合同实现的(因此TYPE_FORWARD_ONLY)。因此,一旦打开光标就无法将光标倒回。

也就是说,当底层资源是事务性的(例如数据库或JMS队列)时,调用read可能会在回滚场景中的后续调用中返回相同的逻辑项。

请在此处的文档中找到更多详细信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/readersAndWriters.html#itemReader