Templates 使用Clojure do模板设置准备好的语句列
我定义了以下代码,以允许我在Templates 使用Clojure do模板设置准备好的语句列,templates,clojure,Templates,Clojure,我定义了以下代码,以允许我在java.sql.PreparedStatement中设置列值。此代码是否合理/惯用?如何改进 (use '(clojure.template :only [do-template])) ; (import all java types not in java.lang) (defprotocol SetPreparedStatement (set-prepared-statement [this prepared-statement index])) (do
java.sql.PreparedStatement
中设置列值。此代码是否合理/惯用?如何改进
(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)
正如我所能说的那样,您的示例看起来与惯用的Clojure非常接近:) 如果您有创建多个模板的情况,那么将类型映射抽象出来可能会使它受益。不过,如果您只创建了这个模板,那么对我来说,这看起来是非常好的clojure