如何写这个clojure.java.jdbc选择where子句

时间:2013-05-23 12:23:39

标签: mysql clojure

如何实施 select * from fruit where cost> 22和成本< 44 w / DSL方式,例如下面的clojure/java.jdbc demo

(require '[clojure.java.jdbc :as j]
     '[clojure.java.jdbc.sql :as s])

(def mysql-db {:subprotocol "mysql"
               :subname "//127.0.0.1:3306/clojure_test"
               :user "clojure_test"
               :password "clojure_test"})

(j/insert! mysql-db :fruit
  {:name "Apple" :appearance "rosy" :cost 24}
  {:name "Orange" :appearance "round" :cost 49})
;; ({:generated_key 1} {:generated_key 2})

(j/query mysql-db
  (s/select * :fruit (s/where {:appearance "rosy"}))
  :row-fn :cost)
;; (24)

提前致谢。

2 个答案:

答案 0 :(得分:3)

where功能仅支持=比较。你能做的不是(s/where {..}),而是可以放一个代表查询部分的向量:["cost > ? AND cost < ?" 22 44]

答案 1 :(得分:0)

由于已从clojure.java.jdbc中删除了SQL DSL,因此推荐的方法是使用HoneySQL作为DSL(如clojure.java.jdbc的自述文件中所述)。