java - Spring Batch JdbcPagingItemReader 似乎没有执行所有项目

标签 java spring spring-batch

我正在开发一款应用程序,该应用程序从 Oracle 数据库中提取记录,然后将其导出为单个表格文件。

但是,当我尝试使用 JdbcPagingItemReader 从数据库读取数据并写入文件时,我只能获得 pageSize 中指定的记录数。因此,如果 pageSize 为 10,那么我会得到一个包含 10 行的文件,而其余记录似乎会被忽略。到目前为止,我还没有找到到底发生了什么,非常欢迎任何帮助。

这是 JdbcPagingItemReader 配置:

<bean id="databaseItemReader"
class="org.springframework.batch.item.database.JdbcPagingItemReader" >
    <property name="dataSource" ref="dataSourceTest" />
<property name="queryProvider">
  <bean
    class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
    <property name="dataSource" ref="dataSourceTest" />
    <property name="selectClause" value="SELECT *" />
    <property name="fromClause" value="FROM *****" />
    <property name="whereClause" value="where snapshot_id=:name" />
    <property name="sortKey" value="snapshot_id" />
  </bean>
</property>
<property name="parameterValues">
   <map>
    <entry key="name" value="18596" />
   </map>
</property>
    <property name="pageSize" value="100000" />
<property name="rowMapper">
    <bean class="com.mkyong.ViewRowMapper" />
</property>

<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<!-- write to this csv file -->
<property name="resource" value="file:cvs/report.csv" />
<property name="shouldDeleteIfExists" value="true" />

<property name="lineAggregator">
      <bean
       class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
    <property name="delimiter" value=";" />
    <property name="fieldExtractor">
          <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
        <property name="names" value="ID" />
       </bean>
    </property>
       </bean>  
</property>

  <job id="testJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step1">
  <tasklet>
    <chunk reader="databaseItemReader" writer="itemWriter" commit-interval="1" />
  </tasklet>
</step>

谢谢

最佳答案

这是缺少的scope="step",它应该是:

<bean id="databaseItemReader"
    class="org.springframework.batch.item.database.JdbcPagingItemReader" scope="step">

关于java - Spring Batch JdbcPagingItemReader 似乎没有执行所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358905/

相关文章:

spring-batch - 读取平面文件时,多线程步骤如何在内部工作?

java - JaxB2Marshaller 不将 XML 绑定(bind)到 Kotlin 数据类

java - Spring Controller 内的多线程 "No thread-bound request found"

java - 如何使用 apache poi 打破 Excel 单元格中的文本

java - 使用另一个 ArrayList 中的 ArrayList 处理复杂的 JSON 响应

java - 从 Spring Framework 4.2.9 升级到 4.3+ 时自定义 ContextConfiguration Loader 出现问题

java - 如何确定最大堆栈大小限制?

spring - 每次测试后撤消@Sql

java - Bean Validation 将 Object RequestParam 转换为 @RequestBody

java - 作业参数正在被缓存