介紹
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作爲開發語言。