spring batch读取数据库怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring batch读取数据库怎么用相关的知识,希望对你有一定的参考价值。

参考技术A 是一个轻量级的框架,完全面向Spring的批处理框架,用于企业级大量的数据读写处理系统。以POJO和Spring 框架为基础,包括日志记录/跟踪,事务管理、 作业处理统计工作重新启动、跳过、资源管理等功能。

限制 JdbcPagingItemReader 在 Spring Batch 项目中可以读取的总记录数

【中文标题】限制 JdbcPagingItemReader 在 Spring Batch 项目中可以读取的总记录数【英文标题】:Limit number of total records that a JdbcPagingItemReader can read in a Spring Batch project 【发布时间】:2019-06-19 16:05:43 【问题描述】:

我正在尝试读取具有数百万条记录的数据库表,因此我正在使用 JdbcPagingItemReader。

但是,我目前处于测试阶段,我正在尝试限制使用 JdbcPagingItemReader 可以读取的总记录数。 我知道这应该很简单,它只是隐藏在某个地方。

这就是我的读者的样子:

   @Bean (name = "metadataItemReader")
   public ItemReader<DocumentMetadata> itemReader( @Value( "$count" ) int count ) 

      JdbcPagingItemReader<DocumentMetadata> reader = new JdbcPagingItemReader<>();
      final SqlPagingQueryProviderFactoryBean sqlPagingQueryProviderFactoryBean = new SqlPagingQueryProviderFactoryBean();
      sqlPagingQueryProviderFactoryBean.setDataSource(dataSource);
      sqlPagingQueryProviderFactoryBean.setSelectClause("select id, file_path, file_name, extension, created_by, TO_CHAR(create_date, 'yyyy-mm-dd hh24:mi:ss') as create_date");
      sqlPagingQueryProviderFactoryBean.setFromClause("from document_metadata");
      //sqlPagingQueryProviderFactoryBean.l
      sqlPagingQueryProviderFactoryBean.setSortKey("id");
      try 
         reader.setQueryProvider(sqlPagingQueryProviderFactoryBean.getObject());
       catch (Exception e) 
         log.error(e.getMessage());
      
      reader.setDataSource(dataSource);
      reader.setPageSize(10);
      reader.setRowMapper( new MetadataRowMapper() );
      return reader;
   

【问题讨论】:

【参考方案1】:

JdbcPagingItemReader 是一个 AbstractItemCountingItemStreamItemReader bean,它有一个 maxItemCount 属性,您可以设置它以实现您想要的。

【讨论】:

谢谢!这正是我所需要的。

以上是关于spring batch读取数据库怎么用的主要内容,如果未能解决你的问题,请参考以下文章

Spring-batch学习总结—ItemReader普通文件,数据库,XML,多文件数据读取

Spring Batch中如何读取多个CSV文件合并数据进行处理?

利用spring batch 读取数据库中的数据写入到txt文件中

如何在 Spring Batch 中分别读取平面文件头和正文

限制 JdbcPagingItemReader 在 Spring Batch 项目中可以读取的总记录数

Spring Batch - 循环读取器、处理器和写入器 N 次