Нет, эти методы напрямую выполняют свои соответствующие подготовленные операторы. Все они довольно простые. Для conj!
и update-in!
посмотрите на вызов format
в функциях conj-rows
и update-vals
, которые вы можете найти в внутреннем пространстве имен:
(format "INSERT INTO %s %s VALUES (%s)"
(to-tablename table) columns template)
(format "UPDATE %s SET %s WHERE %s"
(to-tablename table) columns where)
Для disj!
ClojureQL использует библиотеку clojure.java.jdbc
delete-rows
, которая содержит:
(format "DELETE FROM %s WHERE %s"
(as-identifier table) where)
Таким образом, в основном disj!
получают возможность использовать макросы java.jdbc
* with-naming-strategy
и with-quoted-identifiers
для имени таблицы, в то время как другие - нет.