Add example row builder for record
Note: this makes a lot of assumptions about the shape of the result set's rows!
This commit is contained in:
parent
50fbc5f8f1
commit
b82f349717
1 changed files with 29 additions and 1 deletions
|
|
@ -139,4 +139,32 @@
|
||||||
(query con ["select * from fruit where name = ?" "Pear"])
|
(query con ["select * from fruit where name = ?" "Pear"])
|
||||||
|
|
||||||
(delete! con :fruit {:id 1})
|
(delete! con :fruit {:id 1})
|
||||||
(update! con :fruit {:appearance "Brown"} {:name "Banana"}))
|
(update! con :fruit {:appearance "Brown"} {:name "Banana"})
|
||||||
|
|
||||||
|
(defrecord Fruit [id name appearance cost grade])
|
||||||
|
|
||||||
|
(defn fruit-builder [^java.sql.ResultSet rs opts]
|
||||||
|
(reify
|
||||||
|
rs/RowBuilder
|
||||||
|
(->row [_] (->Fruit (.getObject rs "id")
|
||||||
|
(.getObject rs "name")
|
||||||
|
(.getObject rs "appearance")
|
||||||
|
(.getObject rs "cost")
|
||||||
|
(.getObject rs "grade")))
|
||||||
|
(with-column [_ row i] row)
|
||||||
|
(column-count [_] 0) ; no need to iterate over columns
|
||||||
|
(row! [_ row] row)
|
||||||
|
rs/ResultSetBuilder
|
||||||
|
(->rs [_] (transient []))
|
||||||
|
(with-row [_ rs row] (conj! rs row))
|
||||||
|
(rs! [_ rs] (persistent! rs))))
|
||||||
|
|
||||||
|
(quick-bench ; 2.2 micros
|
||||||
|
(execute-one! con ["select * from fruit where appearance = ?" "red"]
|
||||||
|
{:gen-fn fruit-builder}))
|
||||||
|
(quick-bench ; 2.47 micros
|
||||||
|
(execute! con ["select * from fruit where appearance = ?" "red"]
|
||||||
|
{:gen-fn fruit-builder}))
|
||||||
|
(quick-bench ; 3 micros
|
||||||
|
(execute! con ["select * from fruit"]
|
||||||
|
{:gen-fn fruit-builder})))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue