0
用油滑2的普通SQL查詢,我發現自己寫了相當數量的:避免在Slick 2的普通SQL中使用Boilerplate?
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的Plain SQL做得更好嗎?