Scala/Slick普通SQL:将多个结果检索到地图列表中 [英] Scala/Slick plain SQL: retrieve multiple results into list of maps

查看:80
本文介绍了Scala/Slick普通SQL:将多个结果检索到地图列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的方法可以从数据库表中检索单行:

I have a simple method that retrieves single row from a db table:

object Data {

    implicit val getListStringResult = GetResult[List[Object]] (
        r => (1 to r.numColumns).map(_ => r.nextObject).toList
    )

    def getUser(id: Int): Option[Map[String, Object]] = DB.withSession {
        val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "user").head.getColumns.list.map(_.column)    
        sql"""SELECT * FROM "user" WHERE "id" = $id""".as[List[Object]].firstOption.map(columns zip _ toMap)
    }

}

如何修改此方法以将多个行检索到列表中?结果类型应类似于List[Map[String, Object]]

How can I modify this method to retrieve multiple rows into a list? The result type should look something like List[Map[String, Object]]

我正在使用Play 2.2.1,Slick 1.0.1,Scala 2.10.3,Java 1.8 64bit

I'm on Play 2.2.1, Slick 1.0.1, Scala 2.10.3, Java 1.8 64bit

推荐答案

只需将您的firstOption切换到list:

object Data {

  implicit val getListStringResult = GetResult[List[Object]] (
    r => (1 to r.numColumns).map(_ => r.nextObject).toList
  )

  def getUser(id: Int): List[Map[String, Object]] = DB.withSession {
    val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "user").head.getColumns.list.map(_.column)
    sql"""SELECT * FROM "user" WHERE "id" = $id""".as[List[Object]].list.map(columns zip _ toMap)
  }

}

这篇关于Scala/Slick普通SQL:将多个结果检索到地图列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆