`

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
分享到:
评论

相关推荐

    jquery旋转木马插件SLICK

    1. **多设备支持**:Slick插件完全响应式,适应各种屏幕尺寸,包括桌面、平板和手机,确保在任何设备上都能提供优秀的用户体验。 2. **自定义选项**:提供大量可配置参数,如无限循环、分页导航、箭头导航、自动...

    Linux 开发环境搭建与使用-SlickEdit 的安装与配置.docx

    2. **解压缩文件**:使用命令行将下载的`slickedit.bz2`文件解压到`/usr/local`目录下: ``` sudo tar xvf slickedit.bz2 -C /usr/local/ ``` 3. **配置环境变量**:为了能够在任何目录下直接运行SlickEdit,...

    theNewBoston-Slick2D:按照教程

    用户可以期待通过这些教程逐步学习如何使用Slick2D来构建2D游戏。theNewBoston以其易于理解、步骤清晰的教学风格闻名,所以这将是一个适合初学者入门的资源。 【标签】: "Java" 标签"Java"表明这个教程是针对Java...

    slick插件实现jQuery放大缩小淡入淡出焦点图特效.zip

    2. **动画效果**:通过设置`slick`的选项,可以实现放大缩小的效果。例如,使用`autoplay`和`autoplaySpeed`实现自动切换,`slideFade`启用淡入淡出动画。 3. **自定义样式**:在CSS中,你可以通过添加新的类或覆盖...

    jQuery学习笔记 jQuery API

    ### 2. DOM操作 jQuery提供了丰富的DOM操作方法,如`$(selector).html()`用于获取或设置元素的HTML内容,`$(selector).append()`和`.prepend()`用于在元素内部添加内容,而`$(selector).remove()`则用于移除元素。 ...

    MooTools学习笔记(一)

    - **选择器引擎**:MooTools内置了高效的Slick选择器引擎,支持CSS1到CSS3的选择器,如`$$('div.box')`获取所有类名为box的div元素。 - **元素操作**:提供了一系列方便的DOM操作方法,如`Element.append()`、`...

    jquery学习笔记

    在提供的参考文件`jQuery and jQuery UI Reference 1[1].2.chm`中,你可以找到详细的API文档和使用示例。 ### 学习资源 - 官方文档:https://api.jquery.com/ - jQuery UI官方文档:https://api.jqueryui.com/ - ...

    Java 实现的吃人豆游戏源代码

    图形渲染:使用 Slick2D 库进行图形渲染。 网络通信:使用 UDP 套接字进行网络通信,实现多人游戏。 项目成果展示 单人游戏:展示单人游戏的界面和功能。 多人游戏:展示多人游戏的界面和功能。 用户控制:展示用户...

    样板:响应式CSS,HTML和JavaScript前端起点

    艾玛克样板这是前端开发的框架。 这包括支持 , 模式库(由提供支持),以及前端构建(由供电)。...) 尽管我们鼓励您阅读,但其中一些要点是使用使用 使用笔记一些组件是从版本3继承而来的,但是

    计算机专业英语词汇与翻译复习题(已完成).doc

    2. **阅读理解 (Reading Comprehension)**:占30%,复习内容同样来自1、2、3、5、9单元的阅读文章以及额外的IT英语阅读材料。这需要学生能读懂与计算机科学相关的技术文章,理解其中的概念、原理和技术细节。 3. **...

    sbt.g8:我用作 Scala 项目起点的giter8 模板

    #Apply this templateg8 mhamrah/sbt #Also features a template for Spray-Routing appsg8 mhamrah/sbt -b spray#And for Spark Appsg8 mhamrah/sbt -b spark笔记Go风格的目录布局合并的 build.sbt 文件:包括 ...

    jQuery带左侧缩略图图片幻灯片自动切换特效.zip

    虽然这个项目没有明确提及使用jQuery插件,但实现类似功能时,开发者可能会利用现有的jQuery插件,如Slick、FlexSlider或 bxSlider,它们提供了现成的幻灯片解决方案,只需简单配置即可使用。如果项目没有使用插件...

    NealegamingTUT:Neale Gaming 的改装教程系列

    4. **游戏框架**:使用Java进行游戏开发时,常常会用到游戏框架,如LibGDX或Slick2D。这些框架简化了图形渲染、输入处理和音频播放等任务。教程可能会引导学习者如何安装和使用这些框架。 5. **MOD API**:如果教程...

    GDW-2013-WS:兔子吵架

    1. 项目源代码:可能包含用Java编写的类、方法和其他游戏逻辑。 2. 资源文件:如图像、音频、纹理等,用于构建游戏的视觉和听觉效果。 3. 配置文件:可能包含了游戏设置、玩家选项或其他定制化的数据。 4. 构建脚本...

    jQuery仿简书首页幻灯片图片切换效果.zip

    3. **jQuery插件**:虽然可以纯用jQuery原生API实现幻灯片效果,但为了提高开发效率和代码的可复用性,开发者通常会选择使用现有的jQuery插件,如Slick、Bootstrap Carousel等。这些插件已经预设了丰富的样式和功能...

    jQuery卡片式焦点图切换动画特效.zip

    这时,可以考虑使用现成的jQuery插件,如Slick、Swiper等。这些插件提供了许多预设的选项和回调函数,方便开发者进行自定义配置。 总结,jQuery卡片式焦点图切换动画特效通过结合HTML、CSS和jQuery,实现了动态的...

    jquery实现led广告牌旋转系统图片切换效果.zip

    在本项目中,虽然未明确提及插件,但开发者也可以选择使用现有的jQuery插件,如`jQuery.cycle2`或`Slick Slider`,来快速实现广告轮播功能,这些插件已经封装好了许多常见需求,使用起来更为便捷。 总结来说,本...

    jQuery图片轮播切换显示代码.zip

    虽然在这个压缩包中没有明确提及插件,但实现轮播切换的代码很可能是基于某个或多个jQuery插件,如Slick、Carousel等。这些插件通常包含完整的轮播功能,包括自动播放、导航箭头、分页指示器等。 接下来,我们关注...

    37种效果html5+css3图片幻灯片切换特效.zip

    尽管压缩包未明确提及具体的jQuery插件,但通常在制作复杂特效时,开发者会使用预设的插件,如`jQuery.cycle2`或`Slick`等,来快速构建幻灯片组件。这些插件通常封装了复杂的逻辑,提供易于使用的API,使得开发者...

Global site tag (gtag.js) - Google Analytics