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

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Slickなるものを使ってみよう(mysql)

More than 3 years have passed since last update.

こんにちは世界とロギング関連が終わったら次はDB回り。
いつSparkに手ェつけんだって話だけども、Sparkに渡したいデータ元がDBだからしょうがないんだよと言い訳しとこう。

■build.sbt
基本的に前回記事とかに追記してるものと思いねぇ。

"com.typesafe.slick" %% "slick" % "3.1.0-M2",
"com.typesafe.slick" %% "slick-codegen" % "3.1.0-M2",
"mysql" % "mysql-connector-java" % "5.1.34",

codegenはテーブル構成からmodelクラスにあたるものを作ってくれるのかね。
今回使わないけど今後の要件でなんか使いそうな気はするから入れておこう。
後で消すかもだけど

■scala
参考:http://www.mwsoft.jp/programming/scala/slick3_1.html

import slick.driver.MySQLDriver.api._
import scala.concurrent.Future
import scala.concurrent.Await
import scala.concurrent.duration.Duration

まずimportにこいつら追加。concurrentはとりあえず非同期処理やスレッド回りに関連する連中って理解。詳しくは後々もっとちゃんと追う。今回はとにかく動かす。

    val db = Database.forURL("jdbc:mysql://localhost/scaladevdb", driver="com.mysql.jdbc.Driver", user="scala", password="scala")
    val query = sql"SELECT id, name FROM test".as[(Int, String)]
    val f:Future[Vector[(Int, String)]] = db.run(query)
    Await.result(f, Duration.Inf) foreach println

※mysqlそのものの設定やらは準備は既に出来ている前提です

とりあえずこれでDBアクセスと結果吐き出しは出来た。

・Future、Await,Durationとはなんぞや
・Vector型ってなんぞや
・scalaのシンタックス(Await.resultの行)がまだぜんぜんわからん

課題やまづみ

holy_road_ss
クマシステムの割となんでもやる感じの人
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