嗨,Sean!
HoneySQL非常棒,紧凑且最小化。读它并进行研究对我来说是一种极大的乐趣:)
此外,我还没有玩过你的next.jdbc,但它绝对在我的计划中。
我的任务是以下:
我需要将几个具有相同元数据形状(表和列)的批量插入Honey SQL命令合并为单个jdbc/execute! 调用。
例如:
1. {:insert-into [:my-table]
:values [{:col1 "str1"
:col2 "str2"}]}
2. {:insert-into [:my-table]
:values [{:col1 "str1"
:col2 nil}]} <--------- 这里我们有nil值
HoneySQL给我的是:
1. "insert into "my-table" ("col1","col2") VALUES (?, ?)" ["str1" "str2"]
2. "insert into "my-table" ("col1","col2") VALUES (?, NULL)" ["str1"] <----- NULL被内联
jdbc/execute! 等待SQL和SQL参数向量,因此我想提交一个SQL语句和SQL参数向量
"insert into "my-table" ("col1","col2") VALUES (?, ?)" 和 [["str1" "str2"] ["str1"]],但要做到这一点,我需要有相同的参数"布局"。
因此我需要覆盖HoneySQL默认的内联'NULL'(和布尔值)行为,将它们提升到SQL参数中。
结果:
1. "insert into "my-table" ("col1","col2") VALUES (?, ?)" ["str1" "str2"]
2. "insert into "my-table" ("col1","col2") VALUES (?, ?)" ["str1" nil]
也许你可以提供更准确的方法。