使用Slick 2的纯SQL查询,我发现自己编写了相当多的内容:
import slick.driver.H2Driver.api._
def f(search: Option[String]) = search match {
case Some(s) => sql""" SELECT a FROM foo WHERE s = $s"""
case None => sql""" SELECT a FROM foo"""
}
过去,我已经使用String
来尝试SQL重用:
def g(search: Option[String]) = {
val query: String = search match {
case Some(s) => s"WHERE s = '$s'"
case None => ""
}
sql""" SELECT a FROM foo #$query"""
}
忽略SQL注入风险,我不喜欢第二种方法,因为我发现它更难阅读,即我必须跟踪String
而不是查看整个查询。
但是,这两种方法对我来说都很有趣。如果我可以构建基本查询,然后编写或添加它以添加WHERE
,这似乎是理想的。
我可以使用Slick 2的纯SQL做得更好吗?
答案 0 :(得分:0)
Slick v2并没有准备就绪,并且在性能和查询创建方面存在很多问题。
最新版本的光滑(3.2.1)中已经完成了所有这些工作: http://slick.lightbend.com/doc/3.2.1/introduction.html#plain-sql-support
您还可以让光滑的内部为您生成SQL并使用Slick基于Scala的查询API开始制定查询:http://slick.lightbend.com/doc/3.2.1/queries.html