が、私は自分自身がかなりの量の書き込みを見つける:Slick 2のプレーンSQLでのボイラープレートの回避?スリック2の平野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"""
}
:過去には
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"""
}
を、私は、SQLの再利用を試みることString
年代の使用に頼ってきました
SQLインジェクションのリスクを無視して、この2番目のアプローチが気に入らないのは、読みにくいことです。すなわち、クエリ全体を表示するのではなく、String
を追跡する必要があります。
しかし、これらのアプローチのどちらも私の匂いです。基本クエリを作成してから、それを作成または追加してWHERE
を追加するのが理想的です。
Slick 2のPlain SQLでうまくいくのですか?