`

Slick2 使用笔记(2) CRUD

 
阅读更多

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

 

接着上一篇文

其实具体的都在slick官网的doc中:

http://slick.typesafe.com/doc/2.0.0/

 

这边就总结了一个CRUD 表结构接着使用笔记(1) 没什么变化(因为没设外键 所以就在单表操作):

Tables.Person来自于上一文 用slick的代码生成器生成

slick2有一套和scala的collection类似的操作(不同的是slick2操作的是Query Query可以通过list方法转变为scala中的List)

package slick_test

import org.junit.Test
import org.junit.Before
import scala.slick.jdbc.JdbcBackend.Database
import scala.slick.driver.MySQLDriver.simple._

class TestApp {

  var database: Database = null

  @Before def setUp: Unit = {
    database = Database.forURL(url = "jdbc:mysql://localhost:3306/test",
      user = "root",
      password = "",
      driver = "com.mysql.jdbc.Driver")
  }

  @Test def insert: Unit = {
    database withSession {
      implicit session =>
        //Tables.Person += new Tables.PersonRow(2, Some(23), Some("cc@test.com"), Some("cc"), Some("1111"))
        //Tables.Person insert Tables.PersonRow(0, Some(23), Some("cc@test.com"), Some("cc"), Some("1111"))

        //使用数据库的批量插入(如果数据库支持的话)
        Tables.Person ++= Seq(
          Tables.PersonRow(0, Some(22), Some("cc@test.com"), Some("cc1"), Some("1111")),
          Tables.PersonRow(0, Some(22), Some("cc@test.com"), Some("cc2"), Some("1111")),
          Tables.PersonRow(0, Some(22), Some("cc@test.com"), Some("cc3"), Some("1111")),
          Tables.PersonRow(0, Some(22), Some("cc@test.com"), Some("cc4"), Some("1111")),
          Tables.PersonRow(0, Some(22), Some("cc@test.com"), Some("cc5"), None))
    }
  }

  @Test def query: Unit = {
    database withSession {
      implicit session =>
        //使用 SELECT * FROM COFFEES 这边的*是在Person中定义的*方法反射得到的
        Tables.Person foreach {
          case Tables.PersonRow(id, age, email, name, phone) =>
            println(s"id:$id,age:$age,email:$email,name:$name,phone:$phone")
        }

        //使用for 
        val q1 = for (p <- Tables.Person) 
                   yield (p.email, p.age)
        q1 foreach println
        //输出年龄大于21的人名 用了get因为name属性是Option[String]
        Tables.Person filter {
          _.age>21
        } map {_.name.get} foreach println
    }
  }
  
  @Test def delete : Unit ={
    database withTransaction {
      implicit session =>
        //删除是先得到查询的Query再执行delete
        Tables.Person filter {
          _.id === 17
        } delete
    }
  }
  
  @Test def update : Unit ={
    database withSession {
      implicit session =>
      //操作依旧是在Query上的 和删除的思路是一样的
       val q1=Tables.Person.filter(_.id === 2)
       //更新所有的属性(注意id也会被更新..
       q1.update(Tables.PersonRow(2, Some(13), Some("test@test.com"), Some("fairjm"), Some("2222")))
       //得到查询语句
       println(q1.updateStatement)
       //得到查询的调用者
       println(q1.updateInvoker)
       
       //更新单个属性
       val q2=Tables.Person.filter(_.id === 2).map(_.name)
       q2.update(Some("cc"))
    }
  }
  
  @Test def aggregation : Unit ={
    database withSession {
      implicit session =>
        val ages=Tables.Person map(_.age)
        //得到的sum不会被立即执行 此外还有max min avg这些聚合函数
        val sum=ages.sum
        //输出sum
        Query(sum).foreach(println)
        //打印sum的语句:
        //select x2.x3 from (select sum(x4.x5) as x3 from (select x6.`age` as x5 from `person` x6) x4) x2
        println(sum.selectStatement)
    }
  }
  
  
}

 

还漏了分页 分页官网上有例子的 我就贴一下代码了:

http://slick.typesafe.com/doc/2.0.0/queries.html 写道
val q2 = coffees.drop(10).take(5)
// compiles to SQL (simplified):
// select "COF_NAME", "SUP_ID", "PRICE", "SALES", "TOTAL"
// from "COFFEES"
// limit 5 offset 10

 

0
0
分享到:
评论

相关推荐

    slick2d-examples-1.0.1.zip

    《Slick2D游戏开发库详解与实例演示》 Slick2D,作为一个基于Java的2D游戏开发库,为开发者提供了丰富的功能和便捷的API,使得2D游戏的创建变得简单而高效。这个名为“slick2d-examples-1.0.1.zip”的压缩包,包含...

    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 ...

    钓鱼女孩,使用 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_使用

    SlickEdit 使用技巧积累 SlickEdit 是一款功能强大且价格昂贵的编辑器,拥有许多实用的功能和技巧。本文将对 SlickEdit 的一些使用技巧进行总结和讲解,帮助开发者快速掌握 SlickEdit 工具。 1. 隐藏某个大括号内...

    SlickEdit使用技巧整理.docx

    ### SlickEdit 使用技巧详解 #### 一、快速进入命令行 - **操作步骤**:按`Esc`键可在编辑界面和命令行之间快速切换。此功能有助于提高工作效率,尤其是在进行复杂的查找替换或执行特定命令时更为便捷。 #### 二、...

    SLICK轮播图插件

    SLICK轮播图插件是一款在前端开发中广泛使用的JavaScript插件,专为创建美观、交互性强的轮播图而设计。它具有多种功能,能满足开发者对于动态展示内容的需求,如图片滑动、自动播放、分页指示器、箭头导航等。这款...

    Slick2D Android游戏示例_java_代码_下载

    Slick2D是一个基于Java的2D游戏库,它为开发者提供了丰富的图形绘制功能,简化了2D游戏的开发流程。这款库是基于LWJGL( Lightweight Java Game Library )构建的,允许开发者在Java平台上创建高性能的游戏应用。在...

    SlickEdit Gadgets 2 for VS2005

    《SlickEdit Gadgets 2 for VS2005:高效编程的实用工具》 在软件开发领域,Visual Studio 2005是一款备受推崇的集成开发环境(IDE),为程序员提供了丰富的功能和便利。然而,为了进一步提升开发效率,许多开发者...

    SlickGrid-master.zip

    这个名为"SlickGrid-master.zip"的压缩包很可能包含了SlickGrid的完整源代码和相关资源,让我们深入了解一下SlickGrid的核心特性和使用方法。 首先,SlickGrid的灵活性体现在其允许用户自由地隐藏和显示列。这在...

    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安装,安装过程...

    感觉最好用的轮播插件slick slickSlider1.8.zip

    通过对这些文件的研究,你可以快速上手并掌握Slick的使用方法。 总的来说,Slick以其简洁的代码结构、强大的功能和出色的性能,成为众多开发者心中的首选轮播插件。无论你是初学者还是经验丰富的前端工程师,Slick...

    slickedit 2012 17.0.2 windows 32位 和谐版

    slickedit 2012 17.0.2 windows 32位 和谐版,大家都懂的。 详细过程参见http:// zhiwei.li /text/2012/06/slickedit-2012/comment-page-1/

    jQuery幻灯片插件slick实例

    2. **初始化插件**:在DOM加载完成后,使用jQuery选择器找到要转化为幻灯片的元素,并调用`.slick()`方法进行初始化。例如: ```javascript $('.slider').slick({ dots: true, // 显示分页点 infinite: true, //...

    SlickEdit v27 linux 64

    《SlickEdit v27 Linux 64 专业版:高效编程的新篇章》 SlickEdit v27 是一款专为Linux 64位操作系统设计的专业级代码编辑器,它以其强大的功能和高效的编程体验而备受程序员的青睐。在这款软件中,开发者可以享受...

    jquery旋转木马插件SLICK

    5. **模块化**:Slick插件使用模块化结构,便于代码管理和扩展。 6. **兼容性**:与jQuery库无缝集成,兼容主流浏览器,包括Chrome、Firefox、Safari、Edge和IE9+。 **使用步骤** 1. **引入资源**:在HTML文件中...

    essential-slick-3

    根据提供的信息,我们可以总结出以下相关知识点,这些知识点主要聚焦于"Slick-3"这一数据库访问库的基础使用方法以及如何通过Scala语言进行高效的数据查询与操作。 ### Slick-3 简介 Slick-3 是一个用于 Scala 的...

    Professional_SlickEdit.rar

    2. **多语言支持**:支持多种编程语言意味着SlickEdit可以处理跨平台、跨语言的开发任务。无论是静态类型语言还是动态类型语言,SlickEdit都能提供良好的语法支持和调试工具。 3. **语法高亮与代码折叠**:Slick...

    slick-repo:基于Slick的持久化Scala项目的CRUD存储库

    3. **CRUD操作**:在"Slick-repo"中,CRUD操作被设计成易于使用的API,比如`create`, `read`, `update` 和 `delete`,这些操作通常会映射到SQL的INSERT, SELECT, UPDATE 和 DELETE语句。 4. **Repository模式**:这...

    slick开发库

    2. **数据库连接**: Slick使用`Database`对象来管理与数据库的连接。我们需要提供数据库的URL、用户名、密码等信息来创建`Database`实例。 ```scala import slick.jdbc.H2Profile.api._ val db = Database....

Global site tag (gtag.js) - Google Analytics