使用在 Spring 批处理中获取参数的查询

Use a query that takes parameters in Spring Batch

我有一个功能正常的程序,它从数据库中读取数据并将其输入到一个平面文件中。我正在为这些使用 Spring 批处理 我希望能够为我的查询选择参数。我该怎么做。

我的 xml 看起来像这样:

<bean id="databaseitemreader" class="JdbcursorItemReader">
<property name = "datasource"  <ref = ...>
<property name = sql value= "Select fname , lname , address from tbl_student"/>

Item file writer stuff .....

(这个不用改)

我希望能够将动态参数传递给存储在 xml 文件中的查询。例子: 其中 id = 1234 和 current = 'Y' 没有被硬编码

要映射我当前使用的 rowMapper 接口的值

您可以尝试写一个自定义 reader 由一个 XML 和一个 JDBC reader 组成。
对于从 XML 读取的每个节点,准备一个带有正确 sql 查询的内部 JDBC reader 并将 ItemReader.read() 委托给 JDBCItemReader.read() 直到耗尽;移动到下一个 XML 节点并继续,直到 XML reader 终止。
请记住注册流(或在自定义 reader 中实现 ItemStream 并根据此管理 ItemStream' 方法)。

Spring 批处理文档 http://docs.spring.io/spring-batch/reference/html/configureStep.html#late-binding 中的这一部分解释了如何将参数传递给 spring 批处理作业。
至于如何从 XML 中提取这些参数——这将是你在工作之外做的事情——取决于你如何启动工作。