如何在 SimpleJdbcTemplate 上设置QueryTimeout?
Spring 框架有两个类似的类:JdbcTemplate 是旧的 Java 1.4 类,SimpleJdbcTemplate 是较新的类,具有更好的方法。
JdbcTemplate 有一个方法 setQueryTimeout,它基本上使我能够访问底层 Statement 对象上具有相同名称的方法。
有没有办法用 SimpleJdbcTemplate?
解决方案:根据skaffman的回答,我自己从JdbcTemplate
创建了SimpleJdbcTemplate
对象,所以现在我可以做任何我想做的事情。 代码:
JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
有点拗口,但完成了工作。
更新:这确实比必要的更复杂。 查看答案。
The Spring Framework has two similar classes: JdbcTemplate is the old, Java 1.4 class, and SimpleJdbcTemplate is newer, with nicer methods.
JdbcTemplate has a method setQueryTimeout, which basically gives me access to a method with the same name on the underlying Statement object.
Is there any way to do something similar with a SimpleJdbcTemplate?
Solution: Based on skaffman's answer, I create the SimpleJdbcTemplate
object myself from a JdbcTemplate
, so now I can do whatever I want. Code:
JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
A bit of a mouthful, but gets the job done.
Update: This is indeed more complicated than necessary. See the answer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SimpleJdbcTemplat
e 并不是JdbcTemplate
的替代品,它只是对它的一个 java5 友好的补充,用于某些可以充分利用可变参数和泛型的操作。如果您查看 SimpleJdbcTemplate 的源代码,您会发现它将所有工作委托给 JdbcTemplate 对象,因此通过设置超时(或其他选项) )在
JdbcTemplate
上,您也可以在SimpleJdbcTemplate
上隐式设置它们。如果您通过
SimpleJdbcDaoSupport.getSimpleJdbcTemplate()
获取SimpleJdbcTemplate
,则JdbcTemplate
已正确连接。编辑:
例如:
SimpleJdbcTemplate 包含与 getJdbcTemplate() 检索到的相同的 JdbcTemplate。
如果你不扩展SimpleJdbcDaoSupport,那么是的,你需要自己手动构造一个SimpleJdbcTemplate。
SimpleJdbcTemplat
e isn't a replacement forJdbcTemplate
, it's just a java5-friendly supplement to it, for certain operations which can take best advantage of varargs and generics.If you look at the source for
SimpleJdbcTemplate
, you'll see that it delegates all of its work to aJdbcTemplate
object, and so by setting the timeout (or the other options) onJdbcTemplate
, you implicitly set them on theSimpleJdbcTemplate
also.If you're obtaining the
SimpleJdbcTemplate
viaSimpleJdbcDaoSupport.getSimpleJdbcTemplate()
, then theJdbcTemplate
will already have been wired up correctly.edit:
For example:
The SimpleJdbcTemplate contains the same JdbcTemplate as is retrieved by getJdbcTemplate().
If you don't extend SimpleJdbcDaoSupport, then yes, you need to manually construct a SimpleJdbcTemplate yourself.