【问题标题】:Use a query that takes parameters in Spring Batch在 Spring Batch 中使用带参数的查询
【发布时间】:2015-03-04 01:31:50
【问题描述】:

我有一个正常运行的程序,它从数据库中读取数据并将其输入到平面文件中。我正在为这些使用 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 接口的值

【问题讨论】:

  • 这里的业务流程能详细说一下吗? sql 文件是否嵌套在 xml 读取中,即对于 xml 中的每个元素都从 db 读取,其中 id =element.id 和 element.current=y 将结果写入文件

标签: java spring spring-batch


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多