私はGitHubに、 dbmapperと呼ばれるDapperに大いに触発されたプロジェクトを持っています
Slickに対する利点は次のとおりです。
- DSLなし-あなたはすでに良いデータDSLを知っています、それはSQLと呼ばれています
- 完全に非同期
- ボイラープレートコードはほとんどありません
次に例を示します。
// Scala class that maps to the book table, with columns to match the class members
case class Book(
bookId: Int,
title: String,
retailPrice: BigDecimal,
publishDate: LocalDate)
// mapping function from table row to Book class,
// auto generated at compile time by Scala Macro
implicit def rowToBook: RowData => Book = (r) => DbCodeGenerator.rowToClass[Book](r)
// query returning future list of books,
// safe query interpolation, the maxPrice is converted to a query argument
val maxPrice = 11.99
val allBooksFuture = DbAsync.exec[Book](q"select * from book where retail_price < $maxPrice")
val oneBook: Future[Book] = DbAsync.execOne[Book](q"select * from book where book_id = 2")
// returns Future[Option[]]
val maybeOneBook: Future[Option[Book]] = DbAsync.execOneOrNone[Book](q"select * from book where book_id = -123")
dotnetの世界からdapperを知っているなら、dbmapperは奇妙に馴染みがあると感じるでしょう!