Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 使用Clojure do模板设置准备好的语句列_Templates_Clojure - Fatal编程技术网

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