Использование Clojure do-template для установки столбцов подготовленных операторов - PullRequest
2 голосов
/ 10 января 2011

Я определил следующий код, чтобы позволить мне устанавливать значения столбцов в 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)

1 Ответ

1 голос
/ 11 января 2011

Ваш пример выглядит настолько близко к идиоматическому Clojure, насколько я могу судить :) Возможно, было бы полезно абстрагировать отображение типов, если у вас есть ситуации, когда вы будете создавать более одного шаблона, хотя, если вы создаете только этот шаблон, это выглядит для меня как превосходное завершение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...