我得到了这样一个数据:
{ "key1" : [ "value1", "value2" ],
"key2" : [ "value3", "value4" ],
"key3" : [ "value5", "value6" ] }
我想像这样从他们创建sql查询
WHERE
子句:
WHERE
column1 in (value1, value2)
OR
column2 in (value3, value4)
OR
column3 in (value5, value6)
我试着做一个分配
<#assign column1 = <#if key1??> ${key1?join(", ")} </#if> >
,但似乎不可能
问题是:如何设置
OR
从句之间的分隔符?如何从加入申请加入?也许还有其他不使用分配的解决方案?
你不应该从数据中获取值并将它们直接放入 sql 中,因为这会使你的应用程序容易受到 sql 注入攻击
相反,您应该像这样创建 sql
WHERE 1=1
OR column1 in (?, ?)
OR column2 in (?, ?)
OR column3 in (?, ?)
然后做类似的事情
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "value1");
ps.setString(2, "value2");
...
ps.setString(6, "value6");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
...
}