![](/img/trans.png)
[英]clojure: compute a new key/val pair in a map based on other key/val pairs
[英]match all key/val pairs
原始查询:
-- :name select*-list
-- :command :query
-- :result :raw
-- :doc Select all lists.
-- parameters()
SELECT * FROM list;
我想传递任意键/值对并获取匹配结果。 例如:
(select*-list db-spec {:name "Fruit" :type "Foo"})
应导致:
SELECT * FROM list
WHERE name = 'Fruit'
AND type = 'Foo';
我可以想到一些丑陋的方法来完成此操作,但是可能我忽略了一些不错的方法来完成此操作。
JDBC提供了一些很棒的捷径。 其中之一是按键查找 。 它完全满足您的要求:取得键/值对的映射,并组成一组与AND
连接的WHERE
子句:
(jdbc/find-by-keys db-spec :users {:name "John" :age 42 :city "Chita"})
会变成
select from users
where
name = 'John'
and age = 42
and city = 'Chita';
这是一个示例java-jdbc.sql
(require '[java-jdbc.sql :as sql])
(jdbc/query db-spec
(sql/select * :fruit (sql/where {:appearance "ripe"})))
;; -> ({:grade 8.4, :unit "carton", :cost 12, :appearance "ripe", :name "Plum"})
请参见:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.