2017-08-19 4 views
0

が、私は自分自身がかなりの量の書き込みを見つける: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でうまくいくのですか?

答えて

0

Slick v2は、その準備が整っておらず、パフォーマンスとクエリ作成に関して多くの問題がありました。ツルツルの最新バージョンでの世話をされています

すべて(3.2.1): http://slick.lightbend.com/doc/3.2.1/introduction.html#plain-sql-support

あなたはまた、滑らかな内部への能力を持っているあなたのためのSQLを生成し、スリックのスカラ座を使用してクエリを策定開始ベースのクエリAPI:http://slick.lightbend.com/doc/3.2.1/queries.html

関連する問題