在我的应用程序中,我使用sqlProcessor作为数据库框架:https://github.com/hudec/sql-processor/wiki。
所以,当我想要读取对象列表时,我打电话:
List<MyClass> myClassList = myClassDao.list(...)
我应该如何在itemReader中遍历此列表,或者如何创建使用sqlProcessor从数据库读取数据的自定义项目阅读器
答案 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)