2011-01-10 11 views
2

java.sql.PreparedStatementに列の値を設定できるように、次のコードを定義しました。このコードは合理的/慣用的ですか?どのように改善することができますか?Clojure do-templateを使用して準備済み文の列を設定する

(use '(clojure.template :only [do-template])) 
; (import all java types not in java.lang) 

(defprotocol SetPreparedStatement 
    (set-prepared-statement [this prepared-statement index])) 

(do-template [type-name set-name] 
    (extend-type type-name 
    SetPreparedStatement 
    (set-prepared-statement [this prepared-statement index] 
     (set-name prepared-statement index this))) 

    BigDecimal .setBigDecimal 
    Boolean .setBoolean 
    Byte .setByte 
    Date .setDate 
    Double .setDouble 
    Float .setFloat 
    Integer .setInt 
    Long .setLong 
    Object .setObject 
    Short .setShort 
    Time .setTime 
    Timestamp .setTimestamp) 

; Sample use 
(set-prepared-statement 42 some-prepared-statement 1) 

答えて

1

私はあなたがちょうど作成した場合にあなたがが複数のテンプレートを作成することになるような状況を持っている場合、それはおそらくタイプマッピングを抽象化から利益を得ることができる:) を言うことができるようにあなたの例では、慣用のClojureに近い見えますこの1つは、これは私に優秀なクロージャーのように見えます。