不使用基于java的tasklet执行存储过程

时间:2018-06-13 06:50:30

标签: java spring-batch

我可以通过实现tasklet来执行存储过程。

但是可以从配置job.xml文件执行存储过程吗?

1 个答案:

答案 0 :(得分:1)

StoredProcedureItemReader的工作方式与JdbcCursorItemReader类似,不同之处在于,它运行的是一个返回游标的存储过程,而不是运行查询来获取游标。存储过程可以以三种不同的方式返回光标:

  1. 作为返回的ResultSet(由SQL Server,Sybase,DB2,Derby和。使用) MySQL的)。

  2. 作为out参数返回的ref-cursor(由Oracle和     PostgreSQL的)。

  3. 作为存储函数调用的返回值

  4. 示例Java配置

    @Bean
    public StoredProcedureItemReader reader(DataSource dataSource) {
            StoredProcedureItemReader reader = new StoredProcedureItemReader();
    
            reader.setDataSource(dataSource);
            reader.setProcedureName("sp_customer_credit");
            reader.setRowMapper(new CustomerCreditRowMapper());    
            return reader;
    }
    

    如果您想要返回光标

    @Bean
    public StoredProcedureItemReader reader(DataSource dataSource) {
            StoredProcedureItemReader reader = new StoredProcedureItemReader();
    
            reader.setDataSource(dataSource);
            reader.setProcedureName("sp_customer_credit");
            reader.setRowMapper(new CustomerCreditRowMapper());
            reader.setRefCursorPosition(1);
    
            return reader;
    }