【发布时间】:2021-09-09 04:50:21
【问题描述】:
我正在将我的应用程序从 Cassandra 迁移到 Postgres。虽然我使用 Datastax 驱动程序动态生成 cql 查询,但我在使用 slick 时遇到了麻烦。
当我说动态时,我的意思是我从服务中获取我的列名及其值作为映射 {(key, v) => key.name -> v},我希望将它们插入生成的查询中在我的 Postgres DAO API 中使用 slick。
这是 Cassandra 的示例代码:
private lazy val getStatement: PreparedStatement = {
val select: Select = QueryBuilder.select(valueColumns.map(_.name): _*).from(KeyspaceName, TableName)
val where: Where = select.where()
keyColumns.foreach(col => where.and(QueryBuilder.eq(col.name, bindMarker)))
table.session.getSession.prepare(select)
}
val bs: BoundStatement = getStatement.bind
val updatedKeys = keys.map { case (column, value) => (column, Option(value)) }
writeKeys(updatedKeys, bs) //this method modifies the bound statement to plug in values
val resultSet: ResultSet = table.session.getSession.execute(bs)
有什么替代方法 - 以便在不同表中更好地重用某个查询。还要进一步将其扩展到不同的列名?
如何使用 slick 实现这一点?
【问题讨论】:
标签: postgresql scala dao slick