java在JdbcCursorItemReader中打开CURSOR之前和关闭CURSOR之后执行SQL查询
我想用JdbcCursorItemReader从数据库中读取数据, 此ItemReder的主要sql查询如下:
Select
TABLE1.col1,
TMP_TABLE.num1,
TABLE1.col2
From
TABLE1, TMP_TABLE
WHERE -- some conditions
这里的问题是,TMP_表中的数据应该在执行此主查询之前插入,也应该在执行后删除
使用如下查询插入数据(我希望在打开光标之前运行此查询):
insert into TMP_TABLE (NUM1) value (:x);
insert into TMP_TABLE (NUM2) value (:y);
使用如下查询删除数据(我希望在关闭光标后运行此查询):
delete from TMP_TABLE
使用JdbcCursorItemReader有什么方法可以做到这一点吗
# 1 楼答案
使用
StepExecutionListener
来处理这个问题。您可以在StepExecutionListener#beforeStep()
方法中填充数据,并在StepExecutionListener#afterStep()
方法中删除数据。您可以在这里的文档中阅读有关此侦听器的更多信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/step.html#stepExecutionListener