4

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

所以当我想阅读我调用的对象列表时:

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

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

4

4 回答 4

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 并节省时间。

于 2013-08-22T16:58:17.240 回答
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

  }
}

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

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

于 2014-06-05T11:46:55.027 回答
1

如果您已经有一个列表,那么您可以创建一个IteratorItemReader的实例。

List<MyClass> myClassList = myClassDao.list(...)
ItemReader reader = new IteratorItemReader(myClassList);
于 2013-08-22T12:09:50.527 回答
0

Have a look at the ListItemReader

于 2014-01-04T17:30:35.923 回答