我试图从StepExecution
获取readCount,以便我可以在writer()
中将其写入我的数据库。
有没有办法在StepExecution
的写入(JdbcBatchItemWriter
)部分中获取Step
,以便我可以在其上调用getReadCount()
?
答案 0 :(得分:2)
您可以使用@AfterStep
或@AfterWrite
注释为您的方法添加注释。
例如
@AfterStep
public void afterStep(StepExecution stepExecution) {
//do your thing
}
但是你需要扩展JdbcBatchItemWriter
或包装它。它取决于你如何进行。
答案 1 :(得分:0)
你将给予的课程如下:
公共类CustomStepListener实现StepExecutionListener {
@Override
public void beforeStep(StepExecution stepExecution) {
System.out.println("StepExecutionListener - beforeStep");
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
stepExecution.getReadCount();
return null;
}
}
并配置此类配置读写器的类
答案 2 :(得分:0)
我设法找到了解决办法。
我在我的RowMapper中放了一个incrementor,它将rowCount编写到正在初始化的DTO中,每次调用rowMapper时都会递增(等于传递给它的行数)。
这意味着,由于我的控制表编写器将使用最新的实例化DTO,它将具有可以写入我的表的正确行数。