我正在将目前使用clojure / java.jdbc 0.2.0的代码迁移到新的0.3.0 API。
0.3.0 API中有许多新弃用的功能。
我一直在广泛使用“with-query-results”,但现在已经弃用了,那么用于获得与此相同的行为的直接替换函数是什么?
(defn get-user [username]
(jdbc/with-connection db
(jdbc/with-query-results results
["select username, password, roles from users where username = ?" username]
(cond
(empty? results)
nil
:else
(first results)))))
我知道不再需要“with-connection”,但在那之后,我可以找到可用的文档。
答案 0 :(得分:3)
现在可以通过两个新的命名参数:row-fn
和:result-set-fn
在顶级java.jdbc函数的范围内完成处理结果集。第一行转换每行,第二行转换行。如果:result-set-fn
返回延迟序列,则稍后使用时会出现连接或结果集关闭异常。默认:result-set-fn
为doall
。使用自己的时,请确保它已实现。
(query db
["select firstname, lastname from users where username = ?" username]
:row-fn #(str (% :firstname) \space (% :lastname))
:resultset-fn first)
答案 1 :(得分:1)
我假设你想要这样的东西:
(let [results (jdbc/query db ["select ..." ...] :as-arrays? true)]
...)