Freemarker 一个接一个地申请加入

问题描述 投票:0回答:1

我得到了这样一个数据:

{ "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
从句之间的分隔符?如何从加入申请加入?也许还有其他不使用分配的解决方案?

java freemarker
1个回答
0
投票

你不应该从数据中获取值并将它们直接放入 sql 中,因为这会使你的应用程序容易受到 sql 注入攻击

请看https://xkcd.com/327/

相反,您应该像这样创建 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()) {
   ...
}
© www.soinside.com 2019 - 2024. All rights reserved.