`

Slick2 使用笔记(1)

 
阅读更多

本文来自 http://fair-jm.iteye.com 转截请注明出处

 

slick是什么具体就不多说了 官网都有介绍 自己跟着文档学学就记记笔记 方便以后复习了~~

 

这边从sbt开始 到eclipse

 

先在目录中建立sbt项目的基本结构(也可以用sbt的插件)

手动的话 基本目录应该是这样的:

 

 build.sbt
 lib
 project
     build.properties
     build.scala
  plugin.sbt
  project
 src
    main
       java
       resources
       scala
     test
       java
       resources
       scala
 target
  

以上是完整的目录

当然也可以使用插件(比如sbteclipse-plugin) 全局插件的配置只需在你当前用户家目录(win下也一样)的.sbt的0.13(具体版本) 如果没有plugins文件夹就新建一个 然后放入plugin.sbt 里面填写插件 例如:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")

 就可以使用了(在sbt中运行eclipse 或eclipse with-source=true 可以将sbt项目转化为eclipse也可以使用的项目)

项目结构如下:



 

在build,sbt中添加依赖 内容如下:

name := "sclick_test"

version := "1.0-SNAPSHOT"

scalacOptions ++= Seq("-unchecked", "-deprecation")

libraryDependencies ++= Seq(
	"mysql" % "mysql-connector-java" % "5.1.28",
	"com.typesafe.slick" %% "slick" % "2.0.0",
 	"org.slf4j" % "slf4j-nop" % "1.6.4"
)    

 这边使用mysql 就把mysql的包先导入 然后是slick的包和slf4j

 

 

然后是先得到实体 如果是已经有数据库了 那么直接用他的代码生成工具就可以了 格式如下:

来自 <http://slick.typesafe.com/doc/2.0.0/code-generation.html> 写道
scala.slick.model.codegen.SourceCodeGenerator.main(
Array(slickDriver, jdbcDriver, url, outputFolder, pkg)
)


 这边给出我用mysql的代码:

package slick_test

object model {
	def main(args:Array[String])={
	  scala.slick.model.codegen.SourceCodeGenerator.main(
	  Array[String]("scala.slick.driver.MySQLDriver", 
	                "com.mysql.jdbc.Driver", 
	                "jdbc:mysql://localhost:3306/test", 
	                "G:/scala_workspace/slick_test/src/main/scala",
	                "slick_test")    
	  )
	}
}

会生成一个Tables的scala代码文件 可以直接使用

使用如下: 这里只做一个insert的代码(因为其他我还没看 没学嘛 QAQ)

 

  def main(args:Array[String]):Unit={
     Database.forURL(url="jdbc:mysql://localhost:3306/test",
                     user="root",
                     password="",
                     driver="com.mysql.jdbc.Driver") withSession {
       implicit session =>
          
          Tables.Person += new Tables.PersonRow(2,Some(23),Some("cc@test.com"),Some("cc"),Some("1111"))
     }
  }

  用Some是因为数据库中的属性是nullable的 ID如果是自动增长的 那么随便写(因为最后的语句中是不会insert id的 交给数据库自己处理) +=和insert方法一样

 

 

然后自己写实体也是可以的 但是挺麻烦的 还是用工具生成下比较方便

  class Persons(tag: Tag) extends Table[(Int, Option[Int], Option[String], Option[String], Option[String])](tag, "person") {
     val id: Column[Int] = column[Int]("id", O.AutoInc, O.PrimaryKey)
    /** Database column age  */
    val age: Column[Option[Int]] = column[Option[Int]]("age")
    /** Database column email  */
    val email: Column[Option[String]] = column[Option[String]]("email")
    /** Database column name  */
    val name: Column[Option[String]] = column[Option[String]]("name")
    /** Database column phone  */
    val phone: Column[Option[String]] = column[Option[String]]("phone")
  // Every table needs a * projection with the same type as the table's type parameter
    def * = (id, age, email, name, phone)
}
  val persons = TableQuery[Persons]

 这边没有用PersonRow(工具会自动生成的) 直接用tuple就好了

 进行插入操作和以上是一样的:

 persons insert (2,Some(21),Some("cc@test.com"),Some("cc"),Some("1111"))

 

 

最后注意一点 关于导包 进行+=操作需要导入相应数据库的slick的驱动包

笔者最开始用scala.slick.driver.JdbcDriver包爆出一堆异常(用代码生成器时Int/Integer找不到 手写时提示SQL语法有错误) 用什么数据库就导入相应slick的驱动包 切记

 

完整代码:

package slick_test

//import scala.slick.jdbc.{GetResult, StaticQuery => Q}
import scala.slick.jdbc.JdbcBackend.Database
//import Q.interpolation
import scala.slick.driver.MySQLDriver.simple._


object jdbc {
  def main(args:Array[String]):Unit={
     Database.forURL(url="jdbc:mysql://localhost:3306/test",
                     user="root",
                     password="",
                     driver="com.mysql.jdbc.Driver") withSession {
       implicit session =>
          persons insert (2,Some(21),Some("cc@test.com"),Some("cc"),Some("1111"))
          
          Tables.Person += new Tables.PersonRow(2,Some(23),Some("cc@test.com"),Some("cc"),Some("1111"))
     }
  }
  
  class Persons(tag: Tag) extends Table[(Int, Option[Int], Option[String], Option[String], Option[String])](tag, "person") {
     val id: Column[Int] = column[Int]("id", O.AutoInc, O.PrimaryKey)
    /** Database column age  */
    val age: Column[Option[Int]] = column[Option[Int]]("age")
    /** Database column email  */
    val email: Column[Option[String]] = column[Option[String]]("email")
    /** Database column name  */
    val name: Column[Option[String]] = column[Option[String]]("name")
    /** Database column phone  */
    val phone: Column[Option[String]] = column[Option[String]]("phone")
  // Every table needs a * projection with the same type as the table's type parameter
    def * = (id, age, email, name, phone)
}
  val persons = TableQuery[Persons]
}

 

  • 大小: 9.3 KB
0
0
分享到:
评论

相关推荐

    Slick2D Game Development

    A simple guide, packed with tutorials that ease you into learning about the Slick game workflow and Slick game library. Who this book is written for If you are a game programmer who would like to ...

    slick2d-examples-1.0.1.zip

    slick2d-maven.zip,slick2d库使用示例slick2d gava游戏开发库的七个发行版

    slickedit_使用

    slickedit 的一些使用技巧,帮助开发者快速掌握silkedit工具

    SlickEdit使用技巧整理.docx

    文档里整理了slickedit使用四年多来的技巧和相关设置。

    SlickEdit Pro V23使用MDK5工具编译STM32的例程

    非本人原创,原有说明基于老版本的slickedit和MDK,在此作者使用最新版本的工具做了重新编辑并验证通过。 使用一个简单的工程来演示slickedit2018中编译MDK5项目。里面有详细的说明文档和工程代码

    slickedit 2014 v19 linux 32bit part2

    解压方法step 1三个文件合成一个cat slickedit_linux_32bit.tar.gz.a* &gt;slickedit.tar.gz step 2 tar xzvf slickedit.tar.gz slickedit 2014 v19 linux 32位版的 已经和谐了,step1:解压后执行vsinst安装,安装过程...

    SlickGrid-master-2013-1-1

    SlickGrid-master-2013-1-1 SlickGrid-master-2013-1-1 SlickGrid-master-2013-1-1 SlickGrid-master-2013-1-1

    SlickEdit_2009使用

    SlickEdit_2009使用,very good!

    钓鱼女孩,使用 Slick 2d 的简单钓鱼游戏。

    钓鱼女孩,使用 Slick 2d 的简单钓鱼游戏。 文件 Fishing-Girl-master.zip 包含以下条目。 .classpath/*w w w . j a va 2s . com*/ .gitignore .project .settings/org.eclipse.jdt.core.prefs OpenAL32.dll data/...

    SlickEdit 13.0.0 附破解补丁(1/2)

    一共是2个压缩文件,用7ZIP压缩。都下完以后放在同目录下,改成同文件名即可。格式如下第一个文件改成如:文件名.7z.00x 格式,其中最后一个字符x是数字1.例:第一个文件的文件名为 SlickEdit 13.0.0.7z.001 ,Slick...

    slickedit 17.0.2 linux 64bit

    slickedit 17.0.2 linux vs_exe 覆蓋即可

    slickedit BIOS 語法

    如果有使用slickedit來開發BIOS, 一些副檔案無法高亮度字型,例如*.dec, *.dsc, *.fdf, *.uni, *.vfr, 導入此語法可以幫助BIOS工程師更容易review source code 順便提供ACPI裡面的ASL code的高亮度語法

    slick.min.js

    slick.min.js

    Slickedit2014 Linux64 Part1 (带破解)

    Slickedit2014 Linux64 Part1 (带破解)不解释

    essential-slick-3

    essential-slick-3

    SlickGrid-master.zip

    SlickGrid是一个简单的、快速、灵活的表格控件。可以隐藏/显示列,调整列宽度,排序,自定义单元格展示格式和编辑器,支持编辑和创建新记录。

    WEB表格控件 SlickGrid

    开源的WEB表格控件 SlickGrid

    slickedit 16.0.0.3 绿色 破解版 part2

    slickedit 16.0.0.3 绿色 破解版,自己做的,非常方便,运行.\config\start_slickedit16.bat即可,生成的配置也在.\config下

    Slickedit2012 Part2 (带破解,可破解全部版本)

    Slickedit2012 Part2 (带破解,可破解全部版本)

    SlickEdit17(2012)

    1. 选择对应的版本 2.patch 文件公钥 3. gen license kg只编译了windows版本,其它平台的bin文件拷贝到windows底下patch。 含有公钥的bin文件, Windows平台是vs.exe。 其它平台类推,一般是vs。 已测试Win7 x64,...

Global site tag (gtag.js) - Google Analytics