Factor out set-parameters
This allows for a prepared statement to be reused for queries with different argument values.
This commit is contained in:
parent
d25171e434
commit
85d400e28e
1 changed files with 12 additions and 4 deletions
|
|
@ -44,14 +44,22 @@
|
||||||
(defprotocol Transactable
|
(defprotocol Transactable
|
||||||
(transact [this f opts]))
|
(transact [this f opts]))
|
||||||
|
|
||||||
|
(defn set-parameters
|
||||||
|
""
|
||||||
|
^PreparedStatement
|
||||||
|
[^PreparedStatement ps params]
|
||||||
|
(loop [[p & more] params i 1]
|
||||||
|
(.setObject ps i p)
|
||||||
|
(if more
|
||||||
|
(recur more (inc i))
|
||||||
|
ps)))
|
||||||
|
|
||||||
(defn- prepare*
|
(defn- prepare*
|
||||||
"Given a connection, a SQL statement, its parameters, and some options,
|
"Given a connection, a SQL statement, its parameters, and some options,
|
||||||
return a PreparedStatement representing that."
|
return a PreparedStatement representing that."
|
||||||
[^Connection con [sql & params] opts]
|
[^Connection con [sql & params] opts]
|
||||||
(let [^PreparedStatement s (.prepareStatement con sql)]
|
(doto (.prepareStatement con sql)
|
||||||
(doseq [p params]
|
(set-parameters params)))
|
||||||
(.setObject s 1 p))
|
|
||||||
s))
|
|
||||||
|
|
||||||
(def ^:private isolation-levels
|
(def ^:private isolation-levels
|
||||||
"Transaction isolation levels."
|
"Transaction isolation levels."
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue