用scala,slick做數據交互層,play做mvc開發restful接口

介紹

  • scala 爲我們帶來了函數式編程和麪向對象編程,且scala代碼被編譯成class字節碼,運行在JVM平臺上。更爲神奇的是scala可以無縫調用現有的衆多java類庫。scala比java有更強大的表達能力,函數式帶來了代碼的簡潔,一改java的表達繁瑣。

  • sbt 類似於maven,都屬於構建工具。個人感覺maven好用多了,sbt不能自動合併衝突。sbt的優點在於增量編譯。和eclipse的實時編譯類似,sbt的增量編譯可以讓你更快的運行自己的代碼。天朝的網速使用sbt下載第三方依賴包可是讓人心累。在{home}/.sbt/ 下建立repositories 文件,然後輸入

    [repositories]
    local
    repox-maven: http://repox.gtan.com:8078/
    repox-ivy: http://repox.gtan.com:8078/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

    就可以接到國內代理。

  • slick 是scala官方推出的一個用函數式編程操作數據庫的類orm庫。

    • 創建sbt工程,添加依賴

      libraryDependencies ++= Seq(
      "com.typesafe.slick" %% "slick" % "3.1.1",
      "org.slf4j" % "slf4j-nop" % "1.6.4"
      )
      
    • scala操作是實體類的demo

      class Student(tag: Tag)
      extends Table[(Int,String)](tag,"Student"){
      def id: Rep[Int] = column[Int]("student_ID",O.PrimaryKey)
      def name : Rep[String] = column[String]("student_name",O.SqlType("varchar(20)"))
      def * : ProvenShape[(Int, String)] = (id,name)
      }
    • curd

      
      val students = TableQuery[Student]
      def all():Seq[String] = {
      val db = Database.forConfig("mysql")
      var list = scala.collection.mutable.Seq("a")
      val q = students.filter(_.id > 0)
      //  db.stream(q.result).foreach(println)
      val result = db.run(q.result)
      val f = result.flatMap{_ =>
      result.map(println)
      result.map(
      item => {
        item.map(
          i => {
            list = list :+ i._2
            println("mapping.....")
          }
        )
        println("第一層map執行")
      }
      )
      }
      println("map結束")
      Await.result(f,Duration.Inf)
      db.close()
      list
      }
    • play 是一個mvc框架,基於netty nio實現,沒有實現Servlet規範,較爲輕量級。加上sbt的增量式編譯,可以媲美腳本語言的開發速度。play可以使用java或者scala作爲開發語言。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章