在Plain SQL中按列名填充大小写类

时间:2016-06-22 16:29:12

标签: scala slick slick-3.0

使用Slick's plain SQL,我将使用getResult提取案例类。

 
case class Foo(a: String, b: String)

def foos(): Future[Vector[Foo]] ={
  val getFoo = GetResult(r => Foo(r.<<, r.<<))
  sql"SELECT a, b FROM foo"
    .as(GetFoo)   // could also use getFoo as an implicit and use .as(Foo)
}

对于长案例类,这很快变得难以处理......我可以传递列的名称而不是使用r.>>r.nextString等吗?

使用Anorm我会这样做:

 
val parser: RowParser[Foo] = Macro.parser[Foo]("a", "b")
/* Generated as:
get[String]("a") ~ get[String]("b") map {
  case a ~ b => Foo(a, b)
}
*/

def foos(): List[Foo] ={
  SQL("SELECT a, b FROM foo")
    .as(parser.*)
}

This question from 2013建议您使用r.rs.getString("a")。这看起来有点奇怪,而且非常冗长(但这是我们目前在一些地方做的解决方法)。

有更好的方法吗?或者可以扩展为.rs解决方案的宏?

0 个答案:

没有答案