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)
希望对您有所帮助!!
我正在尝试使用 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)
希望对您有所帮助!!