我想在彈簧JdbcTemplate
中使用scala的隱式轉換。爲什麼不應用轉換?
JdbcTemplate
有以下2種方法:
jdbcTemplate.update(String sql, Object... params) // (1)
jdbcTemplate.update(String sql, PreparedStatementSetter pss) // (2)
PreparedStatementSetter
只是一個接口,並且我想只是一個函數值傳遞給JdbcTemplate
。這意味着我要改變它是
JdbcTemplate.update(SQL:字符串,二傳手:PreparedStatement的=>單元)//(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
和RichJdbcTemplate
之間的隱式轉換。但實際上它並沒有在這裏進行隱式轉換。因爲這裏的方法符合jdbcTemplate.update(String sql, Object... params)
的簽名。這就是爲什麼這裏沒有隱式轉換的原因。有沒有其他解決方案可以實現這一目標?謝謝。
任何人都可以解釋爲什麼此問題已關閉?這對我來說似乎是一個完全合理的問題。 – dhg