限制 JdbcPagingItemReader 在 Spring Batch 项目中可以读取的总记录数
Limit number of total records that a JdbcPagingItemReader can read in a Spring Batch project
我正在尝试读取一个包含数百万条记录的数据库 table,因此我正在使用 JdbcPagingItemReader。
但是,我目前处于测试阶段,我正在尝试限制使用 JdbcPagingItemReader
可以读取的总记录数。
我知道这应该很简单,它只是隐藏在某个地方。
这是我的 reader 的样子:
@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;
}
JdbcPagingItemReader
是一个 AbstractItemCountingItemStreamItemReader
bean,它有一个 maxItemCount
属性,你可以设置它来实现你想要的。
我正在尝试读取一个包含数百万条记录的数据库 table,因此我正在使用 JdbcPagingItemReader。
但是,我目前处于测试阶段,我正在尝试限制使用 JdbcPagingItemReader
可以读取的总记录数。
我知道这应该很简单,它只是隐藏在某个地方。
这是我的 reader 的样子:
@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;
}
JdbcPagingItemReader
是一个 AbstractItemCountingItemStreamItemReader
bean,它有一个 maxItemCount
属性,你可以设置它来实现你想要的。