scala使用slick查询的全过程(使用cass class)
1.
首先导包
<dependency>
<groupId>com.typesafe.slick</groupId>
<artifactId>slick_2.10</artifactId>
<version>3.1.1</version>
</dependency>
2.配置mysql application.conf
mip_common = {
url = "jdbc:mysql://${DB.MI.HOST}:${DB.MI.PORT}/${DB.MI.DB.COMMON}"
driver = com.mysql.jdbc.Driver
user = "${DB.MI.USER}"
password = "${DB.MI.PSWD}"
connectionPool = disabled
keepAliveConnection = true
}
3.创建class与表绑定
package com.you.model.mysql import slick.driver.MySQLDriver.api._ object Campaign { //表字段对应模版
case class CampaignModel(id: Long, version: Long, creation: String, lastModified: String, companyId: Option[Long], brand: Option[String], brandId: Option[Long]
, campaign: Option[String], beginDate: Option[String], endDate: Option[String], url: Option[String], removed: Int,
targetType: Option[String], adslotType: Option[String], deviceType: Option[String])
//表结构: 定义字段类型, * 代表结果集字段
class CampaignTable(tag: Tag) extends Table[CampaignModel](tag, "campaign") {
def id = column[Long]("id") def version = column[Long]("version") def creation = column[String]("creation") def lastModified = column[String]("last_modified") def companyId = column[Option[Long]]("company_id") def brand = column[Option[String]]("brand") def brandId = column[Option[Long]]("brand_id") def campaign = column[Option[String]]("campaign_name") def beginDate = column[Option[String]]("begin_date") def endDate = column[Option[String]]("end_date") def url = column[Option[String]]("url") def removed = column[Int]("removed") def targetType = column[Option[String]]("target_type") def adslotType = column[Option[String]]("adslot_type") def deviceType = column[Option[String]]("device_type") def * = (id, version, creation, lastModified, companyId, brand, brandId,
campaign, beginDate, endDate, url, removed,
targetType, adslotType, deviceType) <> (CampaignModel.tupled, CampaignModel.unapply) } //库表实例
val q = TableQuery[CampaignTable]
} 4.编写dao接口(必须使用Await.result否则查不出数据)
object CampaignDao {
def selectCampaignAndTracking(advertiseid: Long): Map[Long, CampaignAndTracking] = {
val db = Database.forConfig("mip_common")
val tuples: Seq[(Campaign.CampaignModel, Tracking.TrackingModel)] = Await.result(db.run(Campaign.q.join(Tracking.q)
.on(_.id === _.campaignId)
.filter { case (campaign, tracking) => campaign.companyId === advertiseid && campaign.removed === 0 && tracking.removed === false }
.result), Duration.Inf)
val value: Seq[(Long, CampaignAndTracking)] = tuples.map { case (campaign, tracking) => campaign.id -> CampaignAndTracking(campaign.id, campaign.brand, campaign.beginDate, campaign.endDate
, campaign.campaign, campaign.url, campaign.adslotType, campaign.targetType, tracking.landingpage, tracking.id, tracking.publisher, tracking.adslot,
tracking.creative, tracking.kpiType, tracking.kpiValue, campaign.deviceType, tracking.channel, tracking.adType, tracking.region, tracking.vertical)
}
value.toMap }
} 当初看了几篇比较好的博客:
https://blog.csdn.net/u012234115/article/details/78658625
https://www.cnblogs.com/tiger-xc/p/5898585.html
http://wiki.jikexueyuan.com/project/slick-guide/
还可以去官网看
scala使用slick查询的全过程(使用cass class)的更多相关文章
- Scala 深入浅出实战经典 第68讲:Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- 客户端,Scala:Spark查询Phoenix
客户端,Scala:Spark查询Phoenix 1.pom.xml 2.配置文件 2.1config.properties 2.2MyConfig 3.entity实体(与phoenix中的tabl ...
- 第87讲:scala中使用For表达式做查询
今天我们来学习下如何用for表达式在scala中做查询. 先来看看示例代码 case class Book(title:String,authors:List[String]) object text ...
- Scala零基础教学【61-80】
第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析 第62讲:Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析 /** ...
- scala/java等其他语言从CSV文件中读取数据,使用逗号','分割可能会出现的问题
众所周知,csv文件默认以逗号","分割数据,那么在scala命令行里查询的数据: 可以看见,字段里就包含了逗号",",那接下来切割的时候,这本应该作为一个整体 ...
- Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第104篇原创 文章工程:* JDK 1.8* M ...
- Spring Boot WebFlux 集成 Mongodb 数据源操作
WebFlux 整合 Mongodb 前言 上一讲用 Map 数据结构内存式存储了数据.这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作. 什么是 MongoD ...
- Spring Boot WebFlux-03——WebFlux 整合 MongoDB
第03课:WebFlux 整合 MongoDB 前言 上一课的内容讲解了用 Map 数据结构内存式存储了数据,这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作. ...
- 茂名石化BPM应用实践 ——业务协同及服务共享平台建设和应用
一.茂名石化简介 茂名石化隶属于中国石油化工集团公司,创建于1955年,是国家"一五"期间156项重点项目之一.经过50多年的发展,茂名石化已成为我国生产规模最大的炼油化工企业之一 ...
随机推荐
- JS中的闭包(closure)
JS中的闭包(closure) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面就是我的学习笔记,对于Javascript初学者应该是很有用 ...
- Netty(RPC高性能之道)原理剖析
转载:http://blog.csdn.net/zhiguozhu/article/details/50517551 1,Netty简述 Netty 是一个基于 JAVA NIO 类库的异步通信框架, ...
- try/catch中finally的执行时间
前言 由于总是搞不清楚try/catch中的一个执行顺序,返回结果.所以总结一下 1.finally没有return 时,可以看出finally确实在return之前执行了 public static ...
- 1.[Andriod]之Andriod布局 VS WinPhone布局
0.写在前面的话 近来被HTML+CSS的布局折腾的死去活来,眼巴巴的看着CSS3中的flex,grid等更便捷更高效的的布局方式无法在项目中应用,心里那叫一个窝火啊,去你妹的兼容性,,, 最近体验下 ...
- 基于SpringBoot搭建应用开发框架(二) —— 登录认证
零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...
- matplotlib绘图的基本操作
转自:Laumians博客园 更简明易懂看Matplotlib Python 画图教程 (莫烦Python)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili. ...
- Bootstrap开发框架界面的调整处理
我在之前介绍了很多关于Boostrap的框架方面的文章,主要是介绍各种插件的使用居多,不过有时候觉得基于Metronic的Boostrap框架的界面效果不够紧凑,希望对它进行一定的调整,那么我们应该如 ...
- 这段代码,c 1秒,java 9秒,c# 14秒,而python。。。
哎,不得不说最近见得键盘侠客太多了,做程序员没两天总是喜欢上嘴唇触天,下嘴唇碰地的吹. 自己分明都没用过几门语言,就对各门语言评头论足说三道四,这么语言多好那门语言有多烂. 可能是随着时间也变得没那么 ...
- AWT的应用
AWT(Abstract Window TookIT)是java用于创建用户界面和绘制图形的所有类 AWT组件和容器 AWT包含了很多类和接口,用于java Application的GUI(图形用户界 ...
- HashMap 与 HashSet 联系
HashMap实现 Map接口 HashSet实现Collection接口 HashSet底层是HashMap 好的 记住这个就可以了 HashSet只存放key, value: private ...