Scala で SQL クエリを作成する

Suraj P 2023年6月21日
  1. Scala で SQL クエリを作成する
  2. テーブルへの参照を確立する
  3. Scala でデータベースから選択
  4. Scala でテーブルの行を更新する
  5. Scala でテーブルの行を削除する
  6. まとめ
Scala で SQL クエリを作成する

この記事では、Slick を使用して Scala で SQL クエリを作成する方法を学びます。

Scala で SQL クエリを作成する

Slick (Scala Language-Integrated Connection Kit) は、機能的なリレーショナル マッピングを提供する Scala ライブラリであり、リレーショナル データベースのクエリとアクセスを容易にします。 本質的にタイプセーフです。

前提条件:

  1. Scala sbt ファイルに Slick 依存関係を追加します。

    libraryDependencies += "com.typesafe.slick" %% "slick" % "3.3.1"
    
  2. PostgreSQL データベースなど、使用するデータベースに接続します。

    postgres {
        dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
        properties = {
            serverName = "localhost"
            portNumber = "5432"
            databaseName = "slickDemo"
            user = "ScalaDemo"
            password = "1234"
        }
    }
    

データベースに、次の列を持つ students テーブルがあると仮定しましょう: idnamecountrydob

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 でテーブルの行を更新する

id200 に等しいすべての学生のために、国を "Germany" に変更したいとします。

val updateQuery = studentTable.filter(_.id ===200).map(_.country).update("Germany")

上記のクエリでは、最初に id200 に等しい行をフィルター処理し、次にそれらの国を Germany に更新しました。

Scala でテーブルの行を削除する

"tony" という名前の学生レコードを削除してみましょう。

val deleteQuery = studentTable.filter(_.name==="tony").delete

上記のクエリでは、最初に "tony" という名前の行をフィルター処理してから削除しました。

まとめ

この記事では、Slick を使用して Scala でいくつかの基本的な SQL クエリを作成する方法を見てきました。

著者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub