在我的应用程序中,我使用 sqlProcessor 作为数据库框架:https ://github.com/hudec/sql-processor/wiki 。
所以当我想阅读我调用的对象列表时:
List<MyClass> myClassList = myClassDao.list(...)
我应该如何在 itemReader 中迭代这个列表,或者我应该如何创建我的自定义项目阅读器,它使用 sqlProcessor 从数据库中读取数据
在我的应用程序中,我使用 sqlProcessor 作为数据库框架:https ://github.com/hudec/sql-processor/wiki 。
所以当我想阅读我调用的对象列表时:
List<MyClass> myClassList = myClassDao.list(...)
我应该如何在 itemReader 中迭代这个列表,或者我应该如何创建我的自定义项目阅读器,它使用 sqlProcessor 从数据库中读取数据
使用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 并节省时间。
您只需要实现 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
}
}
这个简单的类将返回您的数据,并在检索到所有查询数据时停止读取,
我希望它可以帮助您或其他用户:)
如果您已经有一个列表,那么您可以创建一个IteratorItemReader的实例。
List<MyClass> myClassList = myClassDao.list(...)
ItemReader reader = new IteratorItemReader(myClassList);
Have a look at the ListItemReader