首页 文章

如何为仅执行读取任务的Spring批处理设计一个步骤

提问于
浏览
-2

我的批次类似于Step1 Step2和Step3(如果step2成功则应该调用) .

我需要使用sql进行计数检查,如表中的select count(*)where condition =?在第二步 . 如果count为0则失败;

因为我只有一个读取块和一个进程检查不是一个作家 . 但 Spring 天不允许它 . 我应该尝试使用tasklet吗?但是tasklet不是读者......建议?

2 回答

  • 0

    你可以使用虚拟物品作家或推出你自己什么都不做的作家http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/sample/support/DummyItemWriter.html

  • 0

    这里的最佳解决方案可以是 - 避免使用三个步骤 - 如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获取数据源 .

相关问题