Hoe kan ek setQueryTimeout op SimpleJdbcTemplate?
-
05-07-2019 - |
Vra
Die lente Framework het twee soortgelyke klasse: JdbcTemplate is die ou, Java 1.4 klas, en SimpleJdbcTemplate is nuwer, met mooier metodes
.JdbcTemplate het 'n metode setQueryTimeout , wat basies gee my toegang tot 'n metode met dieselfde naam op die onderliggende Verklaring voorwerp.
Is daar enige manier om iets soortgelyks met 'n SimpleJdbcTemplate ?
Oplossing : Op grond van antwoord skaffman se, Ek skep die SimpleJdbcTemplate
myself beswaar van 'n JdbcTemplate
, so nou het ek kan doen wat ek wil. Kode:
JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
'n bietjie van 'n mondvol, maar kry die werk gedoen.
Update : Dit is inderdaad meer ingewikkeld as wat nodig is. Sien die antwoord.
Oplossing
SimpleJdbcTemplat
e is nie 'n plaasvervanger vir JdbcTemplate
, dit is net 'n java5-vriendelike aanvulling om dit vir sekere bedrywighede wat die beste voordeel kan trek uit varargs en generiese.
As jy kyk na die bron vir SimpleJdbcTemplate
, sal jy sien dat dit afgevaardigdes al sy werk tot 'n JdbcTemplate
voorwerp, en so deur die oprigting van die tydverstreke (of die ander opsies) op JdbcTemplate
, jy implisiet stel hulle op die SimpleJdbcTemplate
ook.
As jy die SimpleJdbcTemplate
via SimpleJdbcDaoSupport.getSimpleJdbcTemplate()
is die verkryging van, dan die JdbcTemplate
sal reeds korrek bedraad up.
wysig:
Byvoorbeeld:
public class MyDao extends SimpleJdbcDaoSupport {
public void doStuff() {
getJdbcTemplate().setQueryTimeout(x);
getSimpleJdbcTemplate().execute(...);
}
}
Die SimpleJdbcTemplate bevat dieselfde JdbcTemplate soos opgespoor deur getJdbcTemplate ().
As jy nie SimpleJdbcDaoSupport brei, dan ja, wat jy nodig het om 'n SimpleJdbcTemplate jouself met die hand te bou.