我有一个场景,我需要从包含hashmap的列表中读取数据。通过各种论坛阅读后,我能够理解甚至利用jdbccursor项目阅读器通过标准查询读取数据库。但不确定如何从上一步中检索此hashmap列表以动态创建查询
下面是我当前运行硬编码查询的代码,而不是我想接收hashmap列表并创建select查询然后运行它
@StepScope
private JdbcCursorItemReader<List<HashMap<String, String>>> checkDatExist(@Value("#{jobParameters['tableName']}") String tableName) {
JdbcCursorItemReader<List<HashMap<String, String>>> getExcelData = new JdbcCursorItemReader<List<HashMap<String, String>>>();
getExcelData.setDataSource(dataSource);
getExcelData.setSql("SELECT id from "+tableName);
getExcelData.setRowMapper(new dbMapper());
return getExcelData;
}
请有任何想法
答案 0 :(得分:0)
您可以在上一步中将此地图放入ExecutionContext,并在阅读器中阅读。
@Component
@JobScope
class PreviousStep {
@Value("#{jobExecution.executionContext}")
private ExecutionContext executionContext;
public void someFunction() {
this.executionContext.put("someVariable", mapYouWantToStore);
}
}
你必须在You Reader课程中做同样的事情。如上所述,只需自动执行ExecutionContext,然后继续“someVariable”。
this.executionContext.get("someVariable");
这将为您提供上一步中存储的地图。