SLICK基础
1.sbt添加依赖
"com.typesafe.slick" %% "slick" % "3.2.3",
"org.slf4j" % "slf4j-nop" % "1.6.4",
"com.typesafe.slick" %% "slick-hikaricp" % "3.2.3",
"mysql" % "mysql-connector-java" % "5.1.47",
2.数据库配置:src/main/resources/application.conf
indie-db = {
url = "jdbc:mysql://devhdp3:3307/indie?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&useSSL=false"
driver = "com.mysql.jdbc.Driver"
keepAliveConnection = true
user = "root"
password = "123456"
connectionPool = disabled
connectionTestQuery = "SELECT 1"
connectionTimeout = 30 second
}
3.代码
package org.netsharp.persist import slick.jdbc.MySQLProfile.api._ import scala.concurrent.duration._
import scala.concurrent.{Await, Future} object Db2 {
//实体定义
final case class Message(
sender: String,
content: String,
id: Long = 0L) //元数据定义
final class MessageTable(tag: Tag) extends Table[Message](tag, "message") {
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def sender = column[String]("sender")
def content = column[String]("content")
def * = (sender, content, id).mapTo[Message]
} def main(args:Array[String]): Unit ={ val messages = TableQuery[MessageTable] //数据库访问对象
val db = Database.forConfig("indie-db") //创建表
val setupFuture = db.run(messages.schema.create)
val result = Await.result(setupFuture, 5.seconds) //插入数据
def freshTestData = Seq(
Message("Dave", "Hello, HAL. Do you read me, HAL?"),
Message("HAL", "Affirmative, Dave. I read you."),
Message("Dave", "Open the pod bay doors, HAL."),
Message("HAL", "I'm sorry, Dave. I'm afraid I can't do that.")
) val insert: DBIO[Option[Int]] = messages ++= freshTestData
val result2: Future[Option[Int]] = db.run(insert)
val rowCount = Await.result(result2, 2.seconds) //查询数据
val halSays = messages.filter(_.sender === "HAL").result
val messagesFuture: Future[Seq[Message]] = db.run(halSays)
val list = Await.result(messagesFuture, 2.seconds)
list.foreach(println)
}
}
4.上面例子是基于mysql的,对于sqlserver需要如下修改
a,sbt添加sqlserver的jdbc包依赖:"com.microsoft.sqlserver" % "mssql-jdbc" % "7.0.0.jre8",
b.添加配置
indie-sqlserver = {
url = "jdbc:sqlserver://host_or_ip;database=REMInformation;useUnicode=true&characterEncoding=UTF-8"
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
keepAliveConnection = true
user = "xxxx"
password = "xxxx"
connectionPool = disabled
connectionTestQuery = "SELECT 1"
connectionTimeout = 30 second
}
c.代码中原来的import
import slick.jdbc.MySQLProfile.api._
改成新的import
import slick.jdbc.SQLServerProfile.api._
d.代码中原来的数据库配置读取
val db = Database.forConfig("indie-db")
改为
val db = Database.forConfig("indie-sqlserver")
SLICK基础的更多相关文章
- 细谈Slick(5)- 学习体会和将来实际应用的一些想法
通过一段时间的学习和了解以及前面几篇关于Slick的讨论后对Slick这个函数式数据库编程工具有了些具体的了解.回顾我学习Slick的目的,产生了许多想法,觉着应该从实际的工作应用角度把我对Slick ...
- FunDA:一个开源的函数式数据处理工具库,也是Slick的补充
如果你是一个Slick用户,或者你是一个数据库编程人员正在尝试进入函数式编程模式,那么FunDA可能会帮到你. 目前市面上FRM(Functional Relational Mapper),即函数式的 ...
- 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础
2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 macOS下Apache的配置 2 macOS ...
- 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记
来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
随机推荐
- 多版本opencv管理; find_package()的原理解析
近期用cmake编译程序时,报错找不到opencv2.由于我电脑里安装了多个版本的opencv,管理不善,借此机会梳理一下思路. 1. Cmake -- find_package(Opencv REQ ...
- E212: Can't open file for writing Press ENTER or type command to continue
E212: Can't open file for writing Press ENTER or type command to continue 出现这个错误的原因可能有两个: 1.当前用户的权限不 ...
- Python打包之pyinstaller
Pyinstaller 进行对应目录下的打包 执行完后请注意建议将该m2的拷贝走 加了参数-w后不会出现黑色控制台的窗子 常用参数说明: –icon=图标路径 -F 打包成一个exe文件 -w 使用窗 ...
- C++Primer第五版——习题答案详解(二)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...
- 当通过Nuget包管理器获取还原组时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项
当通过Nuget包管理器获取还原组件时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项 时 解决方法: 工具---扩展和更新,把Nuget包管理器卸载后,重启VS,再安装,现打开VS项 ...
- ETL讲解(很详细!!!)
ETL讲解(很详细!!!) ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要 ...
- AlexNet实践
注释: CNN使用TF搭建比较简单,就像Hough检测使用CV很简单一样.但是怎么使用CNN去做一些实际操作,或者说怎么使用现有的方法进行慢慢改进,这是一个很大的问题! 直接跟着书本或者视频学习有点膨 ...
- python导包路径的修改
1.sys os 模块 import sys import os 2.查看默认的导包路路径: print(sys.path) 3.路径拼接 os.path.join(url, 'apps')) 4.追 ...
- !!!常用JS代码块 (jquery)
jquery代码块 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> ...
- scp: command not found
scp 不能用? [root@doc]# scp jdk-8u144-linux-x64.tar.gz root@10.10.10.17:/root/ root@10.10.10.17's passw ...