在ScalalikeJdbc中构造SQL查询时,SQLSyntax中的变量引用

时间:2017-07-02 07:16:07

标签: scala

我有一个来自请求的搜索参数,它是一个像“abc”这样的字符串。现在我想构建一个sqls并在sqls中使用这个变量引用。我尝试了下面的方法:

val searchValue = "abc"    

sqls"column_name ILIKE '%$searchValue%'"

但这不起作用。然后我尝试了以下不安全的方法。

val searchValueSqls = SQLSyntax.createUnsafely(searchValue)

sqls"column_name ILIKE '%$searchValueSqls%'"

这很好但是文档说“注意SQL注入漏洞。”

是否有任何安全方法可以在sqls中实现变量引用?

另一种方法是我们可以使用 sqls.like 来构建类似的操作。

是否对sqls.like不区分大小写? 由于 ILIKE 对redshift不区分大小写。

1 个答案:

答案 0 :(得分:0)

我们可以使用 LikeConditionEscapeUtil

val escapedValue = SQLSyntax.createUnsafely(LikeConditionEscapeUtil.escape(searchValue))
sqls"column_name ILIKE '$escapedValue'"