Como faço para setQueryTimeout em SimpleJdbcTemplate?
-
05-07-2019 - |
Pergunta
O Quadro A mola tem duas classes semelhantes:. JdbcTemplate é a idade, Java 1,4 classe, e SimpleJdbcTemplate é mais recente, com métodos mais agradáveis ??
JdbcTemplate tem um método setQueryTimeout , que basicamente me dá acesso a um método com o mesmo nome no objeto Statement subjacente.
Existe alguma maneira de fazer algo semelhante com um SimpleJdbcTemplate ?
Solução : Com base na resposta de skaffman, eu criar o objeto SimpleJdbcTemplate
-me de um JdbcTemplate
, então agora eu posso fazer o que quiser. Código:
JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
Um pouco de um bocado, mas começa o trabalho feito.
Atualizar : Este é realmente mais complicado do que o necessário. Veja a resposta.
Solução
SimpleJdbcTemplat
e não é um substituto para JdbcTemplate
, é apenas um suplemento amigável-java5 a ele, para determinadas operações que podem tirar melhor proveito de varargs e genéricos.
Se você olhar para a fonte para SimpleJdbcTemplate
, você verá que ele delega todo o seu trabalho a um objeto JdbcTemplate
, e assim, definindo o tempo limite (ou outras opções) em JdbcTemplate
, você configurá-los implicitamente no SimpleJdbcTemplate
também.
Se você está obtendo o SimpleJdbcTemplate
via SimpleJdbcDaoSupport.getSimpleJdbcTemplate()
, então o JdbcTemplate
já terá sido ligado corretamente.
edit:
Por exemplo:
public class MyDao extends SimpleJdbcDaoSupport {
public void doStuff() {
getJdbcTemplate().setQueryTimeout(x);
getSimpleJdbcTemplate().execute(...);
}
}
O SimpleJdbcTemplate contém o mesmo JdbcTemplate como é recuperado por getJdbcTemplate ().
Se você não se estendem SimpleJdbcDaoSupport, então sim, você precisa construir manualmente um SimpleJdbcTemplate si mesmo.