Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从spring项目处理器读取数据库调用_Spring_Batch Processing - Fatal编程技术网

从spring项目处理器读取数据库调用

从spring项目处理器读取数据库调用,spring,batch-processing,Spring,Batch Processing,我是新来的 我只是想知道我们是否可以从Itemprocessor进行数据库调用(jdbccursoritemreader) 我需要读取db(ItemReader),发送记录进行处理(ItemProcessor),在处理时,我需要调用其他数据库(就像参考数据一样)来更新我从ItemReader获得的记录,并最终将最终记录发送给writer 欢迎提出任何解决方法和建议 谢谢。是的,你可以这样做 您需要向处理器中注入一个类来为您读取数据库。为了简单起见,我可能会使用JdbcTemplate 大概是这样

我是新来的

我只是想知道我们是否可以从Itemprocessor进行数据库调用(jdbccursoritemreader)

我需要读取db(ItemReader),发送记录进行处理(ItemProcessor),在处理时,我需要调用其他数据库(就像参考数据一样)来更新我从ItemReader获得的记录,并最终将最终记录发送给writer

欢迎提出任何解决方法和建议

谢谢。

是的,你可以这样做

您需要向处理器中注入一个类来为您读取数据库。为了简单起见,我可能会使用JdbcTemplate

大概是这样的:

public class MyProcessor implements ItemProcessor<Foo, Bar> {

  private JdbcTemplate jdbcTemplate;

  @Override
  public Foo process(Bar bar) throws Exception {
    //use JdbcTemplate here
  }

  public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
  }

}
公共类MyProcessor实现ItemProcessor{
私有JdbcTemplate JdbcTemplate;
@凌驾
公共Foo进程(Bar)引发异常{
//在这里使用JdbcTemplate
}
公共void setJdbcTemplate(JdbcTemplate JdbcTemplate){
this.jdbcTemplate=jdbcTemplate;
}
}
配置处理器时,插入JdbcTemplate:

<bean class="com.example.MyProcessor" id="myProcessor">
  <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

你好,尼尔,谢谢你的回复。我将此解决方案保留为计划B。我认为spring批处理配置本身是否提供了这样的解决方案,例如itemReader1从主数据库读取数据并发送到itemprocessor1,itemReader2从参考数据库读取数据并发送到itemprocessor2,并使用compositeitemprocessor club这两个结果,处理并将其发送给单个或多个ItemWriter。可能是这样吗?