Slick Mtable.getTables选择数据库名称

时间:2013-11-27 16:24:33

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

我的Scala / Play数据库网址配置如下所示:

db.default.url="jdbc:mysql://localhost"

我不(不能)选择数据库,因为我使用多个数据库。

我有一个方法,它以列名和值对的映射形式从数据库表中检索数据:

def getSession(id: String, db: String): Map[String, Any] = DB.withSession {

    val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "myTable").head.getColumns.list.map(_.column) 
    val result = sql"""SELECT * FROM #$db.myTable WHERE id=$id""".as[List[Any]].firstOption.map(columns zip _ toMap).get

}

MTable.getTables似乎在这种情况下不起作用,因为我认为它期望DB.withSession选择一个数据库,但事实并非如此。我如何使这项工作?

1 个答案:

答案 0 :(得分:0)

如果要使用多个数据库,则必须在Play中定义多个数据库,例如:

db.database1.url="jdbc:mysql://localhost/database1"
db.database2.url="jdbc:mysql://localhost/database2"
db.database3.url="jdbc:mysql://localhost/database3"

然后,您必须在每个不同的数据库上运行查询,并合并结果,例如:

DB("database1").withSession { ... } ++ DB("database2").withSession { ... }

等...