我想在 spring 中使用 scala 的隐式转换JdbcTemplate
。
JdbcTemplate
有以下两种方法:
jdbcTemplate.update(String sql, Object... params) // (1)
jdbcTemplate.update(String sql, PreparedStatementSetter pss) // (2)
PreparedStatementSetter
只是一个接口,我只想将一个函数值传递给JdbcTemplate
. 这意味着我想将其更改为
JdbcTemplate.update(sql: String, setter: PreparedStatement => Unit) // (3)
我所做的是创建RichJdbcTemplate
,作为包装JdbcTemplate
:
class RichJdbcTemplate(jdbcTemplate: JdbcTemplate) {
def update(sql: String, setter: PreparedStatement => Unit) {
jdbcTemplate.update(sql, new PreparedStatementSetter() {
def setValues(ps: PreparedStatement) {
setter(ps)
}
})
}
}
而且我希望每次调用jdbcTemplate.update(sql, setter: PreparedStatement => Unit)
时都会在jdbcTemplate
and之间进行隐式转换RichJdbcTemplate
。但实际上它并没有在这里进行隐式转换。因为这里的方法符合jdbcTemplate.update(String sql, Object... params)
. 这就是为什么这里没有隐式转换的原因。有没有其他解决方案可以实现这一目标?谢谢。