首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈Slick(3)- Slick201:从fp角度了解Slick

Slick是一个FRM(Functional Relational Mapper),是fp编程提供scala SQL Query集成环境,可以让编程人员在scala编程语言里用函数式编程模式来实现对数据库操作编程...表行实际类型如下: abstract class Table[T](_tableTag: Tag, _schemaName: Option[String], _tableName: String) extends...值得注意是表行最终类型是Rep[T],T可能是case class或者Tuple,被升格(lift)到Rep[T]。所以大部分表行定义支持函数都是在slick.lifted命名空间内。...TableQuery[T]继承了Query[T]:slick.lifted.Query.scala /** Represents a database table....一般来讲Query.result返回R类型Seq[?]。 DBIOAction只是对数据库操作动作描述,不是实际读写,所以DBIOAction可以进行组合。

2.8K70

浅谈Slick(2)- Slick101:第一个动手尝试项目

看完Slick官方网站上关于Slick3.1.1技术文档后决定开始动手建一个项目来尝试一下Slick功能具体使用方法。我把这个过程中一些了解和想法记录下来和大家一起分享。...Slick是集成jdbc更高层Query编程语言,可以通过jdbcurl、DataSource等来指定目标数据库类型及相关参数。...) 在SlickDatabase配置方面forConfig("confItem")是比较灵活、方便实用。...forConfig函数用typesafe-config库里函数载入application.conf文件解析confItem并获取项目里数据库配置参数,下面是项目中resources/application.conf...: 1 package com.datatech.learn.slick101 2 import scala.concurrent.ExecutionContext.Implicits.global

1.6K90
您找到你想要的搜索结果了吗?
是的
没有找到

浅谈Slick(4)- Slick301:我Slick开发项目设置

前面几篇介绍里尝试了一些Slick功能和使用方式,看来基本可以满足用scala语言进行数据库操作编程要求,而且有些代码可以通过函数式编程模式来实现。...在src/main/resources是scala项目获取配置文件默认目录、我们可以按照需要在src/main/scala下增加代码子目录(package)及在src/main/test下摆放测试代码...Slick把jdbc api集成到scala编程语言里,能够支持多种数据库。也就是说Slick提供了多种数据库驱动api。...先试试用最传统依赖注入方式:传入参数来注入这个数据库驱动依赖,把代码放在src/main/scala/model/TableDefs.scala里: 1 package com.bayakala.learn.slick301...我们在src/main/scala/main/Main.scala里测试运算DAOs里query action: 1 package com.bayakala.learn.slick301.main

2.3K100

geotrellis使用(三十)使用geotrellis读取PostGIS空间数据

先介绍一下slick,它是一款开源scala语言数据库处理框架,官网http://slick.lightbend.com/。...;name对应表中name字段,类型String;geom对应空间字段geom,类型Point(空间字段类型可以直接设置Geometry);def * 表示三个字段组合。...2.4 操作类 上文讲到slick优势就在于我们可以像使用scala集合那样读取数据库中信息,并能够对数据库进行操作。...当然如果在实体映射中某个字段按照上述方式设置可空,那么在insert以及下面的update操作时候此字段类型都要为Option,即有值地方使用Some包裹,无值地方设置None。...,此处q直接获取是缓冲区内城市所有信息,所以将q.result传入db.run后就能获取到缓冲区内城市所有信息。

1.6K70

Akka(27): Stream:Use case-Connecting Slick-dbStream & Scalaz-stream-fs2

所以我们只能从小众心态来探讨如何改善Slick现状,希望通过与某些Stream库集成,在Slick FRM基础上恢复一些人们熟悉Recordset数据库光标(cursor)操作方式,希望如此可以降低...[Task,Option[T]]) extends GraphStage[SinkShape[T]] { val in = Inlet[T]("inport") val shape = SinkShape.of...") println(s"取值:${qmr.value}") println("-------------") }).run.unsafeRun 通过测试运行,我们成功...下面是本次示范源代码: import slick.jdbc.H2Profile.api._ import com.bayakala.funda._ import api._ import scala.language.implicitConversions...{GraphStage, GraphStageLogic} class FS2Gate[T](q: fs2.async.mutable.Queue[Task,Option[T]]) extends

82150

FunDA(1)- Query Result Row:强类型Query结果行

FunDA特点之一是以数据流方式提供逐行数据操作支持。这项功能解决了FRM如Slick数据操作以SQL批次模式为主所产生问题。...在前面的一篇讨论中我们介绍了通过Shape来改变Slick Query结果行类型。不过这样转变方式需要编程人员对Slick有较深了解。更重要是这种方式太依赖Slick内部功能了。...下面先看一个典型Slick Query例子: 1 import slick.driver.H2Driver.api._ 2 import scala.concurrent.duration._...返回结果行类型是个Tuple类型:(String,String,Option[Int],Int),没有字段名,所以只能用r._1,r._2...这样位置注明方式来选择字段。...._ 4 import scala.concurrent.Await 5 import slick.driver.JdbcProfile 6 7 object DataRowType { 8

90190

SDP(3):ScalikeJDBC- JDBC-Engine:Fetching

ScalikeJDBC在覆盖JDBC基本功能上是比较完整,而且实现这些功能方式比较简洁,运算效率方面自然会稍高一筹了。...一般来说,各种JDBC工具库如ORM,FRM软件通过各自DSL在复杂数据库表关系环境内进行数据管理编程,最终产生相关SQL语句即(prepared)statement+parameters传递给指定类型数据库...如果这样描述,那么JDBC-Engine主要功能就是支持下面这个函数: jdbcRunSQL(context: JDBCContext): JDBCResultSet 这个函数用户提供一个JDBCContext...类型值,然后由jdbcRunSQL进行接下来运算并返回结果。... HikariCP连接池实现 package configdbs import scala.collection.mutable import scala.concurrent.duration.Duration

1.7K50

细谈Slick(5)- 学习体会和将来实际应用一些想法

想通过这篇博客把想法提出来跟大家分享一下,看看是否能够引起大家共鸣,我下一步工作制定一个方向性框架。...首先谈谈Slick特点:主体方面Slick函数式编程模式带来了SQL编程,可以把数据库表当作scala语言中集合来对待。...这样看来Slick工作原理大体上是:    构建Query >>> 组合Query >>> 产生SQL语句 >>> 按流程把SQL语句发给数据库进行运算 >>> 获取结果 完成了上面的叙述后,总觉着好像缺少些什么...是了,Slick把jdbcresultset隐藏起来了。其目的可以理解:这样可以实现语法安全(type safety),才能把SQL编程融入FP编程,即scala集合编程。...library)分享给scala数据库编程朋友使用。

1.3K80

restapi(3)- MongoDBEngine : MongoDB Scala编程工具库

最近刚好有同事在学习MongoDB,我们讨论过MongoDB应该置于服务器端然后通过web-service客户端提供数据上传下载服务。...在谈到restapi之前我在这篇讨论先介绍一下MongoDB数据库操作scala编程,因为与传统SQL数据库操作编程有比较大差别。...MongoDBEngine是基于mongodb-scala-driver上开发一套MongoDB数据库CRUD Scala编程工具,其主要功能可以从下面这三个函数中反映出来: def mgoUpdate...首先需要注意是它们返回结果类型: DBOResult[T],实质上是 Future[Either[String,Option[T]]] type DBOError[A] = EitherT[Task...Future (Task即Future, 如:Task.runToFuture) 2、返回结果可能为空,所以用Option 3、发生错误结果也空,但需要知道空值是由错误产生,所以用了Either 把所有返回结果类型统一成

1.3K40

PICE(1):Programming In Clustered Environment - 集群环境内编程模式

在5月份深圳scala meetup上我分享了有关集群环境下编程模式思路。我提供了下面这个示意图: ? 上图是我正在探讨“现代企业I.T综合数据平台”网络结构。...由于jdbc数据库不支持分布式运算模式,所以从数据交换角度上它与集群环境是脱离:jdbc数据不可以从集群中任何节点获取。所以只有通过基于http一种服务来向其它节点提供数据。..., parameters = marshal(Seq("Arizona", 5)) ) 然后via Flow传给服务端获取一个akka-stream Source[JBCDataRow,NotUsed..." %% "slick" % "3.2.1", "ch.qos.logback" % "logback-classic" % "1.2.3", "com.typesafe.akka" %..." // don't append file name to package flat_package: true // generate one Scala file for all

1.3K30
领券