CrudRepository 返回的记录的 ItemReader [英] ItemReader for records returned by CrudRepository

查看:32
本文介绍了CrudRepository 返回的记录的 ItemReader的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆