基于读取List <hashmap <string,string>&gt;读取Spring批处理数据库

时间:2018-02-04 01:35:53

标签: spring spring-batch

我有一个场景,我需要从包含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;

}

请有任何想法

1 个答案:

答案 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");

这将为您提供上一步中存储的地图。