春にscalaの暗黙の変換を使用したいと思いJdbcTemplateます。
JdbcTemplate次の2つの方法があります:
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)
暗黙の変換が行われることを期待していました。ただし、実際には、ここでは暗黙的な変換は行いません。ここでは、メソッドがの署名に準拠しているためです。そのため、ここには暗黙の変換はありません。これを達成できる他の解決策はありますか?ありがとう。jdbcTemplateRichJdbcTemplatejdbcTemplate.update(String sql, Object... params)