`

Slick2 使用笔记(3) 实际应用的一些操作以及其他补充内容

 
阅读更多

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

 

本文是slick2 笔记1和2的补充 在实际使用下的一些操作

 

使用SourceCodeGenerator生成实体和操作类

这个类没有提供用户名和密码的参数 所以需要自己改写一个

直接根据scala.slick.model.codegen.SourceCodeGenerator改就可以了

一个例子:

package mysql_sourceGen

import scala.slick.{ model => m }
import scala.slick.model.codegen._

class MySQLSourceCodeGenerator(model: m.Model)
  extends AbstractSourceCodeGenerator(model) with OutputHelpers {
  type Table = TableDef
  def Table = new TableDef(_)
  class TableDef(model: m.Table) extends super.TableDef(model) {
    type EntityType = EntityTypeDef
    def EntityType = new EntityType {}
    type PlainSqlMapper = PlainSqlMapperDef
    def PlainSqlMapper = new PlainSqlMapper {}
    type TableClass = TableClassDef
    def TableClass = new TableClass {}
    type TableValue = TableValueDef
    def TableValue = new TableValue {}
    type Column = ColumnDef
    def Column = new Column(_)
    type PrimaryKey = PrimaryKeyDef
    def PrimaryKey = new PrimaryKey(_)
    type ForeignKey = ForeignKeyDef
    def ForeignKey = new ForeignKey(_)
    type Index = IndexDef
    def Index = new Index(_)
  }
}

object MySQLSourceCodeGenerator {
  import scala.slick.driver.JdbcProfile
  import scala.reflect.runtime.currentMirror
  def main(args: Array[String]) = {
    args.toList match {
      case List(slickDriver, jdbcDriver, url, outputFolder, pkg, user, pass) => {
        val driver: JdbcProfile = {
          val module = currentMirror.staticModule(slickDriver)
          val reflectedModule = currentMirror.reflectModule(module)
          val driver = reflectedModule.instance.asInstanceOf[JdbcProfile]
          driver
        }
        driver.simple.Database
          .forURL(url, driver = jdbcDriver, password = pass, user = user)
          .withSession { implicit session =>
            (new SourceCodeGenerator(driver.createModel)).writeToFile(slickDriver, outputFolder, pkg)
          }
      }
      case _ => {
        println("""
Usage: SourceCodeGenerator.main(Array( slickDriver, jdbcDriver, url, outputFolder, pkg ))

slickDriver: Fully qualified name of Slick driver class, e.g. "scala.slick.driver.H2Driver"

jdbcDriver: Fully qualified name of jdbc driver class, e.g. "org.h2.Driver"

url: jdbc url, e.g. "jdbc:postgresql://localhost/test"

outputFolder: Place where the package folder structure should be put

pkg: Scala package the generated code should be places in
            
user: DataBase's username

pass : the user's password
            """.trim)
      }
    }
  }
}

 我起的名字有歧义 这个不只是mysql可以用 所有都可以用 你传入driver的字符串就可以了

 

 

多表以及分页查询的例子:

    SlickDB.database.withSession {
      implicit session =>
        val query = for {
          cid <- Tables.Category.filter(_.name === tag).map(_.id)
          aids <- Tables.ArticleCategory.filter(_.cId === cid).map(_.aId)
          article <- Tables.Article.filter(_.id === aids)
        } yield article
        ((query.length.run-1) /Constants.PageSize +1,
        query.sortBy(_.time desc).drop((page - 1) * Constants.PageSize).take(Constants.PageSize).list)
    }

 从tag表拿出tag得到对应的cid 根据对应的cid找到文章的aid 根据文章的id得到文章

多对多查询有中间表时使用的例子 

后面的分页 按照时间降序 得到第page(从1开始)页的数据

 

 

插入得到id的例子:

val aid =
          (Tables.Article returning Tables.Article.map(_.id)) += article

 类似于postgresql的 returnning 

 

 

 

0
0
分享到:
评论

相关推荐

    slickedit_使用

    本文将对 SlickEdit 的一些使用技巧进行总结和讲解,帮助开发者快速掌握 SlickEdit 工具。 1. 隐藏某个大括号内的内容 SlickEdit 提供了隐藏大括号内的内容的功能,这可以帮助开发者快速隐藏不需要的代码。操作...

    essential-slick-3

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

    slick2d-examples-1.0.1.zip

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

    Slick2D Game Development

    No previous knowledge of Slick 2D or any other Java game library is required. This book assumes that you have basic Java syntax and object oriented programming knowledge. Book Details Paperback: 116...

    钓鱼女孩,使用 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.0 绿色版 + SlickEdit 12.0.3 汉化包

    对于这个汉化包,用户需要仔细阅读提供的说明文件,了解如何正确地将汉化内容应用到SlickEdit 12.0.3上。这可能包括解压文件、复制到特定目录、修改配置文件或运行特定的批处理脚本等步骤。同时,用户也应当注意,...

    SlickEdit使用技巧整理.docx

    ### SlickEdit 使用技巧详解 #### 一、快速进入命令行 - **操作步骤**:按`Esc`键可在编辑...以上是SlickEdit中一些常用且高效的使用技巧汇总,这些技巧不仅能够提升编程效率,还能帮助开发者更好地管理和维护代码。

    jQuery幻灯片插件slick实例

    本文将深入探讨jQuery Slick插件的实例应用,以及如何利用它来构建各种类型的滑动展示。 首先,jQuery Slick插件的核心特性包括: 1. **多列布局**:Slick支持多列布局,可以在同一幻灯片组件中展示多个并排的项目...

    SlickEdit+Yagarto 搭建 Cortex M3 编译环境

    2. **编译并运行**:使用SlickEdit中的“Build”菜单来编译项目,编译成功后,将生成的目标文件下载到目标板上进行测试。 #### 五、总结 通过上述步骤,我们可以使用SlickEdit和Yagarto构建一个高效、稳定的Cortex...

    SlickGrid-master.zip

    SlickGrid是一个强大的JavaScript库,专门用于在Web应用中展示大量数据并进行高效的数据操作。它的设计目标是提供一个轻量级、可定制且性能出色的表格控件,尤其适合处理成千上万条记录的数据集。这个名为"SlickGrid...

    SLICK轮播图插件

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

    SlickGrid-master

    在实际应用中,SlickGrid通常与其他前端框架如Angular、React或Vue等结合使用,通过API接口与后端进行数据交互,实现数据的动态加载和实时更新。其开源的特性使得开发者可以深入理解并定制化这个控件,以适应项目的...

    block-slick:与Slick3兼容的Slick2阻塞API

    学习Block-Slick时,建议先熟悉Scala和Slick3的基本概念,包括类型安全的SQL查询、配置数据库连接以及如何处理异步操作。了解这些基础知识后,再学习Block-Slick的使用,会更加得心应手。 总的来说,Block-Slick是...

    SlickEdit Gadgets 2 for VS2005

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

    slick响应式轮播焦点图

    "slick响应式轮播焦点图"是一个广泛应用于网站设计中的组件,它允许用户在有限的空间内展示多张图片或内容,通过滑动效果提供一种优雅的用户体验。Slick是一个JavaScript库,专门用于创建高性能、响应式的轮播插件。...

    SlickGrid基于jQuey的ui插件

    SlickGrid是一款高效、强大的基于jQuery的表格插件,它为开发者提供了丰富的功能,以便在Web应用中展示和操作大量数据。SlickGrid最初由Morten Jensen开发,其核心特性在于高性能的数据渲染和交互性,尤其适用于处理...

    slick开发库

    5. **扩展性**: Slick与其他Scala库如Akka、Play Framework等有良好的集成,可以方便地在异步环境中使用。 ### 三、Slick的使用场景 Slick适用于需要高性能、类型安全的数据库操作的Scala项目,尤其在微服务架构中...

    jquery旋转木马插件SLICK

    这款插件广泛应用于产品展示、图片画廊、内容滑动等场景,通过其强大的API和易于使用的设置,使得在网页上实现动态滚动效果变得轻而易举。 **核心特性** 1. **多设备支持**:Slick插件完全响应式,适应各种屏幕...

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

    它使用高效的JavaScript和CSS3动画,保证了在不同设备上流畅运行,同时减少了对CPU的占用。对于大型项目或者高流量网站,这样的性能优化至关重要,可以提升用户体验,降低服务器压力。 再者,Slick提供了丰富的选项...

Global site tag (gtag.js) - Google Analytics