Slick Plain Sql 通用 Return 类型

Slick Plain Sql Generic Return Type

我正在尝试使用 Slick 编写可配置的 sql 查询执行器。用户提供准备好的声明?并在 运行 时间通过替换 ?有价值观。

通常这就是 运行 使用 slick 的普通 sql 查询的方式。

val query = sql"#$queryString".as[(String,Int)]

在我的例子中,我不知道结果类型,所以我想取回通用结果类型。也许是一个元组列表,每个元组代表一行结果集。

关于如何做到这一点有什么想法吗?

我从一个 Scala git 问题中找到了解决方案。这是

ResultMap extends GetResult[Map[String, Any]] {
  def apply(pr: PositionedResult) = {
    val resultSet = pr.rs
    val metaData = resultSet.getMetaData();
    (1 to pr.numColumns).map { i =>
      metaData.getColumnName(i) -> resultSet.getObject(i)
    }.toMap
  }

然后我们可以简单地做 val query = sql"#$queryString".as(ResultMap)

希望对您有所帮助!!