我想在 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)
时都会在jdbcTemplateand之间进行隐式转换RichJdbcTemplate。但实际上它并没有在这里进行隐式转换。因为这里的方法符合jdbcTemplate.update(String sql, Object... params). 这就是为什么这里没有隐式转换的原因。有没有其他解决方案可以实现这一目标?谢谢。