本文来自 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
相关推荐
基于java的贝儿米幼儿教育管理系统答辩PPT.pptx
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
基于java的消防物资存储系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
TA_lib库(whl轮子),直接pip install安装即可,下载即用,非常方便,各个python版本对应的都有。 使用方法: 1、下载下来解压; 2、确保有python环境,命令行进入终端,cd到whl存放的目录,直接输入pip install TA_lib-xxxx.whl就可以安装,等待安装成功,即可使用! 优点:无需C++环境编译,下载即用,方便
使用软件自带的basic脚本编辑制作的脚本 低版本软件无法输出Excel报告,可以通过脚本方式实现这一功能
基于java的就业信息管理系统答辩PPT.pptx
25法理学背诵逻辑.apk.1g
基于java的大学生校园兼职系统答辩PPT.pptx
做到代码,和分析的源数据
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
适用于ensp已经入门人群的学习,有一定难度
基于java的数码论坛系统设计与实现答辩PPT.pptx
tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl
基于java的医院信管系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-4.2.tar.gz
链表 合并两个链表,链表基础操作