自定义Spring的JdbcBatchItemWriter,为每条记录

时间:2015-07-24 20:42:52

标签: spring spring-batch

我有一个要求,我将从供应商处收到一个平面文件,我需要读取记录并在我的数据库表中插入/更新/删除它们。我从供应商那里得到了行动标志,表明我是否需要插入/更新/删除该特定记录。平面文件将包含大量记录,我不想做手动步骤,例如检查每个记录的动作标志[通过覆盖ItemWriter的write()方法并在块中循环项目列表]并手动构造sql并使用JDBCTemplate执行每条记录的数据库操作。

我可以使用JdbcBatchItemWriter实现此目的吗?有没有办法为块中的每个记录设置sql,以便Spring Batch进行批量更新?在这种情况下如何调用ItemPreparedStatementSetter?

1 个答案:

答案 0 :(得分:1)

由于您选择的是记录级别,请查看ClassifierCompositeItemWriterhttp://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/support/ClassifierCompositeItemWriter.html)。该ItemWriter实现需要Classifier实现,用于确定要使用的ItemWriter。从那里,您可以配置一个ItemWriter插入,一个用于更新,一个用于删除。每条记录将汇集到正确的实例,并假设您的代表是JdbcBatchItemWriter,您将获得通常所做的相同批处理(一个用于插入,一个用于更新,一个用于删除)。