Scala で SQL クエリを作成する
この記事では、Slick
を使用して Scala で SQL クエリを作成する方法を学びます。
Scala で SQL クエリを作成する
Slick (Scala Language-Integrated Connection Kit) は、機能的なリレーショナル マッピングを提供する Scala ライブラリであり、リレーショナル データベースのクエリとアクセスを容易にします。 本質的にタイプセーフです。
前提条件:
-
Scala
sbt
ファイルにSlick
依存関係を追加します。libraryDependencies += "com.typesafe.slick" %% "slick" % "3.3.1"
-
PostgreSQL データベースなど、使用するデータベースに接続します。
postgres { dataSourceClass = "org.postgresql.ds.PGSimpleDataSource" properties = { serverName = "localhost" portNumber = "5432" databaseName = "slickDemo" user = "ScalaDemo" password = "1234" } }
データベースに、次の列を持つ students
テーブルがあると仮定しましょう: id
、name
、country
、dob
。
case class students(id:Long, name:String, country:String, dob:Option[LocalDate])
それでは、クエリを書きましょう。
テーブルへの参照を確立する
students
テーブルからクエリを実行するには、まず、そのテーブルへの参照を作成する必要があります。
val studentTable = TableQuery[students]
これで、studentTable
を使用して Slick
クエリを記述できます。
Scala でデータベースから選択
次のようなクエリを書きましょう:
select * from students where country="Japan".
上記のクエリは、日本
からの学生に関する情報を提供します。
今度は Slick
を使って同じクエリを Scala で書いてみましょう。
val students_from_Japan = studentTable.filter(_.country === "Japan")
Scala でテーブルの行を更新する
id
が 200
に等しいすべての学生のために、国を "Germany"
に変更したいとします。
val updateQuery = studentTable.filter(_.id ===200).map(_.country).update("Germany")
上記のクエリでは、最初に id
が 200
に等しい行をフィルター処理し、次にそれらの国を Germany
に更新しました。
Scala でテーブルの行を削除する
"tony"
という名前の学生レコードを削除してみましょう。
val deleteQuery = studentTable.filter(_.name==="tony").delete
上記のクエリでは、最初に "tony"
という名前の行をフィルター処理してから削除しました。
まとめ
この記事では、Slick
を使用して Scala でいくつかの基本的な SQL クエリを作成する方法を見てきました。