CrudRepository 返回的记录的 ItemReader [英] ItemReader for records returned by CrudRepository
问题描述
我有一个 spring 批处理应用程序,其中读取器从外部数据库读取,处理器将其转换为目标数据库的 POJO,写入器将转换后的 POJO 写入目标数据库
I have a spring batch application wherein reader reads from an external db and processor transforms it to the POJO of my destination db , writer will write the transformed POJO to the destination db
我正在使用以下 CrudRepository
I am using following CrudRepository
public interface MyCrudRepository extends CrudRepository<MyDbEntity, String> {
List<MyDbEntity> findByPIdBetween(String from, String to);
List<MyDbEntity> findByPIdGreaterThan(String from);
}
我想知道,上面的 ItemReader 会是什么样子?
I wanted to know , how the ItemReader for above would look like?
我应该在我的 ItemReader 的 @PostConstruct
中调用 myCrudRepository.findByPidBetween(String from, String to)
吗?
Should I call myCrudRepository.findByPidBetween(String from, String to)
in @PostConstruct
of my ItemReader ?
这不会使 ItemReader 成为静态的吗?由于每个作业运行对于 findByPidBetween
都有不同的方法参数.
Wouldnt that make the ItemReader static? As each job run would have different method parameter for findByPidBetween
.
ItemReader 应该如何针对上述问题构建?
How should ItemReader be structured for above problem?
推荐答案
我想知道,上面的 ItemReader 会是什么样子?
I wanted to know , how the ItemReader for above would look like?
RepositoryItemReader
正是您所需要的.您可以将它与您的存储库一起使用并指定用于读取项目的方法.你可以找到一个例子 这里
RepositoryItemReader
is what you need. You can use it with your repository and specify the method to use to read items. You can find an example here
对于 findByPidBetween,每次作业运行都会有不同的方法参数
each job run would have different method parameter for findByPidBetween
您可以将这些作为参数传递给您的作业并在您的阅读器中使用它们.
You can pass those as parameters to your job and use them in your reader.
这篇关于CrudRepository 返回的记录的 ItemReader的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!