Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@yutaka2487

ScalikeJDBC のミニマルストローク Hello World

はじめに

ScalikeJDBC を使ってミニマルストローク Hello World をやったときの記録です。
環境は以下の通り。データベースは何でも良かったのですが、手元に PostgreSQL があったのでそれを使いました。

  • JDK 8.0
  • Scala 2.11.8
  • sbt 0.13.12
  • PostgreSQL 9.6

build.sbt を作る

適当なフォルダに空の build.sbt を作ります。以降、そこがプロジェクトのルートフォルダになります。
今回 build.sbt に記述する必要があるライブラリは ScalikeJDBC 自体と PostgreSQL の JDBC ドライバですので、
Mave Repository で探し、以下の画像のように SBT 向けの記述をコピーしてきます。

image

それらを build.sbt にペーストします。また scalaVersion も明示しておいたほうが良いでしょう。
いかにも Maven Repository からコピペしただけの内容ですが、よしとします。

build.sbt
scalaVersion := "2.11.8"

// https://mvnrepository.com/artifact/org.scalikejdbc/scalikejdbc_2.11
libraryDependencies += "org.scalikejdbc" % "scalikejdbc_2.11" % "2.4.2"

// https://mvnrepository.com/artifact/org.postgresql/postgresql
libraryDependencies += "org.postgresql" % "postgresql" % "9.4.1211"

PostgreSQL のテーブルを作る

どんなでもいいので適当なテーブルを作っておきます。今回はここの例を使いました。

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

そして、どんなでもいいので適当なデータを投入しておきます。

INSERT INTO COMPANY VALUES (1, 'Hello', 1, NULL, NULL);
INSERT INTO COMPANY VALUES (2, 'World', 2, NULL, NULL);

Hello World

以下をプロジェクトのルートフォルダ直下に HelloSaclikeJDBC.scala 等のファイル名で保存し sbt 実行しましょう。
おまじない要素多いですが、とりあえずこれで Hello と World が取得できれば OK です。
データベースの情報は自環境に合わせて変えてください。

HelloScalikeJDBC.scala
import scalikejdbc._

object HelloScalikeJDBC extends App {

  // データベースに接続
  val url = "jdbc:postgresql://localhost:5432/postgres"
  val user = "postgres"
  val password = "postgres"
  ConnectionPool.singleton(url, user, password)

  // クエリの実行と結果表示
  val names = DB readOnly {implicit session =>
    sql"select name from company".map(_.string("name")).list.apply()
  }
  names.foreach(println)

}

この後は

ここで作ったプログラム自体に実用性は一切ありませんが、とりあえず最も単純なのが動きさえすれば
この後は公式のドキュメント(これ)を参考に、いろいろ改変ながら試してゆけるのではないかと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?