【问题标题】:Scala/Slick plain SQL: retrieve multiple results into list of mapsScala/Slick 纯 SQL:将多个结果检索到地图列表中
【发布时间】:2013-11-10 20:02:19
【问题描述】:

我有一个从 db 表中检索单行的简单方法:

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]]

我正在使用 Play 2.2.1、Slick 1.0.1、Scala 2.10.3、Java 1.8 64 位

【问题讨论】:

    标签: scala playframework playframework-2.0 slick play-slick


    【解决方案1】:

    只需将您的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)
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2015-11-13
      • 1970-01-01
      • 2016-04-30
      • 2013-12-01
      • 2015-12-28
      • 2015-08-23
      相关资源
      最近更新 更多