我用 JdbcTemplate 实现了 ItemReader 。

问题是 read() 在无限循环中被调用。

public class MyReader implements ItemReader<Col>, InitializingBean {
    private JdbcTemplate jdbcTemplate;
    private RowMapper<Col> rowMapper;
    private String sql;
    private DataSource dataSource;

public Col read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
     Col col = jdbcTemplate.queryForObject(sql,null, rowMapper);
     return col;
    }

}

Spring批量配置:
<chunk reader="itemReader" writer="itemWriter"
            processor="itemProcessor" commit-interval="1" />


<bean id="itemReader"
    class="batch.MyReader"
    scope="step">
    <property name="dataSource" ref="dataSource" />
    <property name="sql" value="#{stepExecutionContext[sql]}" />
    <property name="rowMapper">
        <bean class="batch.ColMapper" />
    </property>
</bean>

最佳答案

这就是 Spring Batch 步骤的工作方式:将调用 ItemReader.read() 方法,直到它返回 null。

关于java - ItemReader reader() 无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28069624/

10-11 02:26