我正在使用
NamedParameterJdbcTemplate
。共有三种方法,除了 SQL 查询不同之外,每种方法的作用几乎相同,例如:
public open fun method1() : String {
val sql = "select * from func1()"
return namedParameterJdbcTemplate.queryForObject(sql, new MapSqlParameterSource(), String::class.java)
}
public open fun method2() : String {
val sql = "select * from func2()"
return namedParameterJdbcTemplate.queryForObject(sql, new MapSqlParameterSource(), String::class.java)
}
public open fun method3() : String {
val sql = "select * from func3()"
return namedParameterJdbcTemplate.queryForObject(sql, new MapSqlParameterSource(), String::class.java)
}
我需要为执行查询设置不同的超时:第一个方法 10 秒,第二个 5 秒,等等
最好的方法是什么?
我知道有 setQueryTimeout 的东西,但它为 jdbctemplate 设置超时,并且每个查询都将使用相同的超时。
我有两种方法:
我不知道该选什么。
也许还有其他选择。
我认为实现这一点的最佳方法是为每个查询创建一个单独的 JdbcTemplate
例如创建方法:
private fun createNamedJdbcTemplateWithTimeOut(timeoutSeconds: Int): NamedParameterJdbcTemplate {
val template = JdbcTemplate(//your datasource//);
template.queryTimeout = timeoutSeconds;
return NamedParameterJdbcTemplate(template)
}
现在在您的存储库/服务类中,您可以像这样使用它:
private val jdbcTemplateWithTimeout1: NamedParameterJdbcTemplate = createNamedJdbcTemplateWithTimeOut(1)
private val jdbcTemplateWithTimeout10: NamedParameterJdbcTemplate = createNamedJdbcTemplateWithTimeOut(10)
private val jdbcTemplateWithTimeout30: NamedParameterJdbcTemplate = createNamedJdbcTemplateWithTimeOut(30)
您可以像常规 JdbcTemplate 一样在您的方法中使用它