我正在尝试配置JdbcPagingItemReader Bean,但我不完全知道表中各列的名称,因此我想知道是否存在一种无需排序键即可配置PagingQueryProvider的方法。
@Bean
public JdbcPagingItemReader<Map<String, Object>> pagingItemReader(DataSource dataSource){
JdbcPagingItemReader<Map<String, Object>> itemReader = new JdbcPagingItemReader<>();
itemReader.setDataSource(dataSource);
itemReader.setQueryProvider(queryProvider());
itemReader.setPageSize(1000);
itemReader.setRowMapper(BatchConfiguration::rowMapper);
return itemReader;
}
/* This configuration throws the exception
* 'java.lang.IllegalArgumentException: sortKey must be specified'
*/
private MySqlPagingQueryProvider queryProvider(){
MySqlPagingQueryProvider queryProvider = new MySqlPagingQueryProvider();
queryProvider.setSelectClause("SELECT *");
queryProvider.setFromClause("FROM "+ clientTableName);
return queryProvider;
}
答案 0 :(得分:0)
我想知道是否有一种无需排序键即可配置PagingQueryProvider的方法。
否,这是不可能的。 sortKey
是构建SQL语句所必需的。以下是reference documentation的摘录:
SqlPagingQueryProviderFactoryBean要求您指定一个select子句和一个from子句。您还可以提供可选的where子句。这些子句和必需的sortKey 用于构建SQL语句。