春季批次的临时表

时间:2015-07-12 17:50:28

标签: spring-batch

由于多个表连接,我的阅读器中的查询需要很长时间才能获取结果。我正在考虑分割我的查询连接的选项,如果可能的话使用临时表。这是一个可行的解决方案?可以Spring批量支持在阅读器,处理器和编写器之间使用临时表吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。您应该为您的阅读器,编写器,处理器使用Same DataSource实例。

示例:

var customer = CreateInstanceFromPrivateConstructor<Customer>();
SetPrivateProperty(p=>p.ID, customer, 10);
myContext.Set<Customer>().Attach(customer);

//...and all the above was just for this:
order.setCustomer(customer);
myContext.SaveChanges();

阅读器:

@Component

public class DataSourceDao{

  DataSource dataSource; 


  public DataSource getDataSource() {
        return dataSource;
    }
    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

}

作家:

 public class MyReader implements ItemReader<POJO_CLASS> {
      @Autowired
      DataSourceDao dataSource; 

      @Override
           JdbcCursorItemReader<POJO_CLASS> reader= new 
            JdbcCursorItemReader<>();

      public <POJO_CLASS> read() throws Exception, UnexpectedInputException, 
                     ParseException, NonTransientResourceException {

           reader.setDataSource(dataSource.getDataSource());
          // Implement your read logic

      }

}