Slick 是 TypeSafe 推出的 Scala 数据库访问库。开发者可以使用 Scala 语言风格来编写数据查询,而不是用 SQL,示例代码: object Coffees extends Table[(String, Int, Double)]("COFFEES") { def name = column[String]("COF_NAME", O.PrimaryKey) def supID = column[Int]("SUP_ID") def price = column[Double]("PRICE") def * = name ~ supID ~ price } Coffees.insertAll( ("Colombian", 101, 7.99), ("Colombian_Decaf", 101, 8.99), ("French_Roast_Decaf", 49, 9.99) ) val q = for { c <- Coffees if c.supID === 101 // ^ comparing Rep[Int] to Rep[Int]! } yield (c.name, c.price) println(q.selectStatement) q.foreach { case (n, p) => println(n + ": " + p) } Scala Slick 3.0.0 RC1 发布,源代码现已提供在:https://github.com/slick/slick/tree/3.0.0-RC1。Scala 2.10 (推荐 2.10.4) 和 2.11 (推荐 2.11.4) 构建现已提供在 Maven Central。 Slick 3.0 主要特性: A new API for composing and executing database actions. Support for the Reactive Streams API for streaming results from the database. Improved configuration of database connections via Typesafe Config, including built-in support for HikariCP. Support for nested Option types and non-primtive Option types in the Lifted Embedding. Properly typed outer join operators based on the improved Option support. A new macro-based implementation of the Plain SQL API with optional compile-time checking and type inference for embedded SQL statements. Many small improvements and bug fixes in the schema code generator. Optional multi-line formatting and indenting of generated SQL code for more readable debug output. 更新了大部分手册;“Slick Testkit” 和 “Plain SQL Queries” 章节将会尽快更新;将会尽快提供标准 Activator 模板。 如果没有发现什么重大问题,将会在后两周发布 Slick 3.0.0 最终版本! Slick 2.1.0 以来的完整改进列表: bd0c9c4 Try to prevent some spurious failures on Travis CI 58a1db9 Proper treatment of CHAR(1) columns in JdbcModelBuilder: 7f0f62f Make code generator tests usable from other slick-extensions: 25370cb Fix bugs detected by Slick Extensions upgrade: 12faf5d Upgrade to Reactive Streams 1.0.0.RC3 648184c Package structure and project layout refactoring: 9c730c0 Upgrade to Reactive Streams 1.0.0.RC2: 24770de Add DatabaseConfig as a higher-level configuration abstraction: 759cbc2 Restore #$ support in the macro-based Plain SQL interpolation: 62ddadc Macro-based PlainSQL API Implemented TypedStaticQuery as tsql d63a018 UUID regression testkit: 0a44b74 Update LiftedEmbedding.scala 5af0d9b Distinguish between BLOB and BYTEA in PostgreSQL model builder ec7f2aa Use TestDB for code generator tests: cc8d3f0 Proper support for string lengths: 41c717a Support fetch size in statement parameters. 965604c Use force-insert semantics for inserting from queries and expressions. 0e58e7d Deprecate the Direct Embedding 0ba0dd5 Remove the blocking API that was introduced in 3.0.0-M1 2f64c79 Rename Action to DBIO: 86974bd Simplify SQLBuilder and formatting/indenting: 20378ec Quote SqlType argument in code generator. b1dca21 Make ColumnOptions more modular: 7272180 Use unconstrained text type as default on PostgreSQL 6cec3f7 Prefer prepareStatement(sql) instead of prepareStatement(sql, Int, Int) a3eec4f Support transaction isolation levels 6ea7fdb Generic fusion implementation for FlatMapAction and CleanupAction: 706f2b1 Allow the SQL statements to be overridden in SqlActions. a325f5e Run a user-defined init function on all created JDBC Statements 3315a3b Refactoring of ActionContext: dc687de Avoid long nested sequences of SchemaDescription.++ in generated code: 62d5e92 Quote illegal identifiers in generated Scala sources. 58c4ed5 Make ‘desiredColumnOrder’ in code generator non-final. a645205 Support statement parameters in the new Action-based API. b1c5b66 Switch JDBC metadata API and code generator to the new API. c92a615 Fix typo in orm-to-slick.rst d4f019f Move profile-level Action definitions outside of profiles. 5cd423f Deprecate Invoker convenience methods and iteratees 7d576c8 Properly deprecate .Implicit and .simple in all profile levels 30c135e Upgrade to sbt 0.13.7 e9274ec Improve build system for documentation: a6e3b9b Further modularization of Slick: 4ab4a6b Switch Direct Embedding over to the new Action-based API. ac37f1c Update documentation for 3.0: e6562c7 Simplify Action Effect handling: 06d1ca0 Increase timeout for Reactive Streams TCK tests. efbe6f6 Bump version numbers: 4d42528 Add concurrency stress test for streaming API: 80929a6 Documentation plus minor improvements and fixes: 273b957 Update to Reactive Streams 1.0.0.M3 and fix remaining PR review issues: 688d7f2 Convert more test cases and add missing features: d862e0f Optimize the streaming engine and fix some bugs: 9ad62a9 Implement streaming via Reactive Streams API: 6a85767 Convert several test cases to the new API. 8ef6cde Add basic transaction support for database actions. 09590fd Implement session pinning for database Actions: 66a9b41 Basic implementation of action monad and asynchronous execution engine: bf17772 Use HikariCP by default (instead of no connection pooling): 4569c52 Simplify connection pool configuration cc92c26 Simplify thread pool configuration: 423e78c Remove the option to disable auto-commit for new connections. e4dddcd Remove BoneCP support and drop configuration compatibility with Play. 812100e Add HikariCP support in addition to BoneCP. bb58103 Add primitives and configuration for async execution of blocking I/O 0ea777a Fix broken build due to merging nested options support 8d4a02f Ensure generated file ends with a newline character. 9cdf7ec Make comment format match others in file. ef5f9a8 Avoid indenting blank lines, to avoid trailing whitespace. 8225a8f Add Option-extended joins: 75583dc Lifted Embedding encoding of nested and multi-column Option types: de389a4 Remove the Column type. 5da96b4 Update orm-to-slick.rst 7a1d119 modified to use GlobalConfig. 777dbeb Add SimpleLiteral factory (and fix one unrelated unchecked warning) 82b258f Use Unicode symbols in tree and table dumps for better readability. f54d272 Add BoneCP support to Database.forConfig. 369ad73 Use application.conf for Slick settings. 61d032b Corrected docs to use “inSet” instead of “inSeq” b0b0252 Fix forceInsertAll for single argument 770d0a1 Update build for 2.2.0-SNAPSHOT cb8183d Added support for string function repeat. 57aa9e7 Workaround to pass Travis CI. 7a58f7f Try for SQL String Indentation. 更多改进内容请看发行说明。 Slick 3.0.0 RC1 发布,Scala 数据库访问层下载地址