如何在SimpleJdbcTemplate上设置QueryTimeout?

时间:2009-07-30 12:24:52

标签: jdbc spring jdbctemplate

Spring Framework有两个类似的类:JdbcTemplate是旧的Java 1.4类,而SimpleJdbcTemplate是更新的,有更好的方法。

JdbcTemplate有一个方法setQueryTimeout,它基本上允许我访问基础Statement对象上具有相同名称的方法。

有没有办法与SimpleJdbcTemplate做类似的事情?

解决方案:根据skaffman的回答,我自己从SimpleJdbcTemplate创建JdbcTemplate对象,所以现在我可以做任何我想做的事。代码:

JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);

有点满口,但完成了工作。

更新:这确实比必要的更复杂。看到答案。

1 个答案:

答案 0 :(得分:4)

SimpleJdbcTemplat e不是JdbcTemplate的替代品,它只是对java5友好的补充,对于某些可以充分利用varargs和泛型的操作。

如果查看SimpleJdbcTemplate的来源,您会看到它将其所有工作委托给JdbcTemplate对象,因此在{上设置超时(或其他选项) {1}},您也隐含地将它们设置在JdbcTemplate上。

如果您通过SimpleJdbcTemplate获取SimpleJdbcTemplate,则SimpleJdbcDaoSupport.getSimpleJdbcTemplate()已经正确连线。

编辑:

例如:

JdbcTemplate

SimpleJdbcTemplate包含与getJdbcTemplate()检索的相同的JdbcTemplate。

如果你没有扩展SimpleJdbcDaoSupport,那么是的,你需要自己手动构建一个SimpleJdbcTemplate。