如何在春季批量创建自定义项目阅读器

时间:2013-08-22 11:45:20

标签: java spring-batch

在我的应用程序中,我使用sqlProcessor作为数据库框架:https://github.com/hudec/sql-processor/wiki

所以,当我想要读取对象列表时,我打电话:

List<MyClass> myClassList = myClassDao.list(...)

我应该如何在itemReader中遍历此列表,或者如何创建使用sqlProcessor从数据库读取数据的自定义项目阅读器

4 个答案:

答案 0 :(得分:5)

使用ItemReaderAdapter 来自Javadoc:
Invokes a custom method on a delegate plain old Java object which itself provides an item.

<bean id="itemReader" class="org.springframework.batch.item.adapter.ItemReaderAdapter">
    <property name="targetObject" ref="myClassDao" />
    <property name="targetMethod" value="list" />
    <property name="arguments">
      <list>
        <!-- add arguments list -->
      </list>
    </property>
</bean>

<bean id="myClassDao" class="path.to.MyClassDAO" /

如果您有特殊条件,参数和其他需求,您可以创建自己的ItemReader,但是您可以扩展ItemReaderAdapter以重用DAO并节省时间。

答案 1 :(得分:4)

您只需要实现ItemReader接口。例如:

public MyReader implements ItemReader<YourClass> {


  @Override
  public YourClass read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {

    // Implement your read logic, return null when no more items

  }
}

这个简单的类将返回您的数据,并且只在检索到所有查询数据时停止读取,

我希望它可以帮助您或其他用户:)

答案 2 :(得分:1)

如果您已有列表,则只需创建IteratorItemReader的实例。

List<MyClass> myClassList = myClassDao.list(...)
ItemReader reader = new IteratorItemReader(myClassList);

答案 3 :(得分:0)