我正在调用batch batchUpdate,它通常在一次调用中发送超过50个查询,每个更新查询可能会更新10,000个记录。整个过程花费时间并最终导致事务超时异常失败。 springContext.xml中定义的数据源通过@Qualifier注入JdbcTemplate,springContext.xml中定义的事务超时适用于整个应用程序,但在此特定事务中我想覆盖事务超时值在调用batchUpdate方法之前。
@Qualifier("myDataSource")
@Autowired
public void setDataSource(DataSource ds) {
this.jdbc = new JdbcTemplate(ds);
jdbc.setFetchSize(10000);
jdbc.setQueryTimeout(0); // zero means there is no limit
}
//I want to set custom transaction timeout before calling this from some other methods.
jdbc.batchUpdate(queries.toArray(new String[0]));