我的批次类似于Step1 Step2和Step3(如果step2成功则应该调用) .
我需要使用sql进行计数检查,如表中的select count(*)where condition =?在第二步 . 如果count为0则失败;
因为我只有一个读取块和一个进程检查不是一个作家 . 但 Spring 天不允许它 . 我应该尝试使用tasklet吗?但是tasklet不是读者......建议?
你可以使用虚拟物品作家或推出你自己什么都不做的作家http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/sample/support/DummyItemWriter.html
这里的最佳解决方案可以是 - 避免使用三个步骤 - 如Step1 Step2和Step3 .
您只能使用两个步骤 . Step1和Step2 .
在第1步 - 添加一个监听器 - 步骤监听器 .
在其StepListener - 实现中 - 你可以获取计数,然后你可以决定是否要启动步骤2 .
在afterStep mothod中 - 您可以使用下面的代码来计算 -
Connection conn = null; PreparedStatement pstmt= null; try { DataSource dataSource = (DataSource) Main.APP_CONTEXT .getBean("dataSource"); conn = dataSource.getConnection(); pstmt = conn.prepareStatement(" your SQL query to insert "); pstmtMstr.executeQuery(); } catch (Exception e) { }finally{ if(pstmt!=null){ pstmt.close(); }if(conn!=null){ conn.close(); } }
在Main类中 - 将应用程序上下文加载到静态变量APP_CONTEXT中并在此处使用它 .
如果您不使用基于XML的方法,那么您可以使用autowire获取数据源 .
2 回答
你可以使用虚拟物品作家或推出你自己什么都不做的作家http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/sample/support/DummyItemWriter.html
这里的最佳解决方案可以是 - 避免使用三个步骤 - 如Step1 Step2和Step3 .
您只能使用两个步骤 . Step1和Step2 .
在第1步 - 添加一个监听器 - 步骤监听器 .
在其StepListener - 实现中 - 你可以获取计数,然后你可以决定是否要启动步骤2 .
在afterStep mothod中 - 您可以使用下面的代码来计算 -
在Main类中 - 将应用程序上下文加载到静态变量APP_CONTEXT中并在此处使用它 .
如果您不使用基于XML的方法,那么您可以使用autowire获取数据源 .