2017-07-26 53 views
-1

我是Spring的新手。我有一個用例,我需要執行相同的多個SQL查詢併爲每個查詢返回相同的POJO。我想寫一個物品閱讀器並在每個步驟中更改查詢。有沒有辦法做到這一點?春季開機春季批量:如何動態設置查詢項目讀取器

+0

什麼叫**在每一步的意思** ?這是一個多步驟的工作?在我看來,如果你打算寫一個自定義閱讀器,你可以按你想要的方式編寫它。使用API​​提供的讀取器可能無法實現。 –

回答

0

您可以使用Spring Batch的後期綁定在你的讀者加入@StepScope

示例代碼

@StepScope 
@Bean 
public ItemReader<Pojo> myReader() { 
    JdbcCursorItemReader<Pojo> reader = new JdbcCursorItemReader<>(); 
    reader.setDataSource(basicDataSource); 
    //You can inject sql as per you need 
    //Some expamles 
    //using #{jobParameters['']} 
    //using {jobExecutionContext['input.file.name']}" 
    //using #{stepExecutionContext['input.file.name']}" 
    reader.setSql("Your-SQL");  
    reader.setRowMapper(new MyMapper()); 
    return reader; 
} 

檢查部分5.4 https://docs.spring.io/spring-batch/reference/html/configureStep.html