fun*_*nyF 1 scala resultset implicit-conversion slick
我正在使用Scala 2.10并且遇到Slick问题(普通查询,java.sql.ResultSet).如果我写像这样的查询
Q.query[String, ResultSet](query).list(rs.getString("id"))
日食会告诉我 could not find implicit value for parameter rconv: scala.slick.jdbc.GetResult[java.sql.ResultSet]
我这个问题最重要的来源(http://slick.typesafe.com/doc/0.11.2/sql.html)没有帮助.如何编写这些隐式转换?ResultSet在Slick中还有其他任何一种代表s的方式吗?
让我试着解释一下:).你有的地方ResultSet,你应该有一个实际映射结果集的类型.例如,一个元组或一个案例类将保存您的行.如果是自定义(case)类,则必须提供implicit GetResult描述如何从jdbc映射ResultSet到类的类.参数.list应该是一个值,你希望Slick放在你准备好的语句的占位符中,而不是你得到的ResultSet那个(假设这就是rs代表什么 ).
建议的用法是这样的:
import scala.slick.jdbc.{GetResult, StaticQuery}
import StaticQuery.interpolation
val price = 1000.0
// use tuples
val expensiveDevices: List[Device] =
Q.query[String, (Long,Double,Date)]("select * from DEVICE where PRICE > ?").list( price )
// or a case class (needs implicit GetResult for Device)
case class Device(id: Long,price: Double,acquisition: Date)
implicit val getDeviceResult =
GetResult(r => Device(r.<<, r.<<, r.<<))
val expensiveDevices2: List[Device] =
Q.query[String, Device]("select * from DEVICE where PRICE > ?").list( price )
// or the even nicer interpolation syntax
val expensiveDevices3: List[Device] =
sql"select * from DEVICE where PRICE > $price" .as[Device].list
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |