在clojure / java.jdbc 0.3.0中,已弃用的“with-query-results”函数的替换是什么?

时间:2013-12-02 19:54:40

标签: jdbc clojure

我正在将目前使用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”,但在那之后,我可以找到可用的文档。

2 个答案:

答案 0 :(得分:3)

现在可以通过两个新的命名参数:row-fn:result-set-fn在顶级java.jdbc函数的范围内完成处理结果集。第一行转换每行,第二行转换行。如果:result-set-fn返回延迟序列,则稍后使用时会出现连接或结果集关闭异常。默认:result-set-fndoall。使用自己的时,请确保它已实现。

(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)]
  ...)

请参阅herein the respective documentation