在打开游标之前和在JdbcCursorItemReader中将其关闭之后执行SQL查询

时间:2018-08-05 16:46:29

标签: java sql spring-batch

我想使用一个JdbcCursorItemReader从数据库中读取数据, 此ItemReder的主要sql查询类似于:

Select
    TABLE1.col1,
    TMP_TABLE.num1,
    TABLE1.col2
From 
    TABLE1, TMP_TABLE
WHERE -- some conditions

这里的问题是TMP_TABLE中的数据必须在执行此主查询之前插入,并且也应在之后删除。

使用以下查询插入数据(我希望在打开游标之前运行该查询):

insert into TMP_TABLE (NUM1) value (:x);
insert into TMP_TABLE (NUM2) value (:y);

使用类似查询的数据删除数据(我希望在关闭光标后运行此查询):

delete from TMP_TABLE

使用JdbcCursorItemReader有什么方法吗?

1 个答案:

答案 0 :(得分:0)

使用StepExecutionListener处理此问题。您可以使用StepExecutionListener#beforeStep()方法填充数据,并使用StepExecutionListener#afterStep()方法删除数据。您可以在以下文档中了解有关此侦听器的更多信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/step.html#stepExecutionListener