簡體   English   中英

匹配所有鍵/值對

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM