我有很多格式的查询
db withSession{ implicit session : Session =>
Q.update[String](query).execute(id)}
我希望以更简单的方式编写它:db.execute(query, id)
。所以,我在同一文件/包中定义了包装器,我在其中初始化了db
。如何导出包装器以便以这种方式使用它?现在,我遇到问题value execute is not a member of scala.slick.session.Database
注意:查询和id是字符串。我使用普通的sql
db是一个已经初始化的数据库:
object SQLUtilities{
lazy val db = init()
private def init() = {Database.forURL("jdbc:postgresql://localhost", driver = "org.postgresql.Driver")}
def execute(query: String, id: String){
db withSession{ //implicit session : Session =>
Q.update[String](query).execute(id)
}
}
}
导入import scala.slick.jdbc.{GetResult, StaticQuery => Q}; import scala.slick.session.{Session, Database}
等标准软件包
答案 0 :(得分:1)
听起来你可能正在寻找隐含的。如果是这样,您可能希望重新定义SQLUtilities,如下所示:
object SQLUtilities{
lazy val db = init()
private def init() = {Database.forURL("jdbc:postgresql://localhost", driver = "org.postgresql.Driver")}
implicit class PimpedDB(val database:Database) extends AnyVal{
def execute(query: String, id: String){
database withSession{ implicit session : Session =>
Q.update[String](query).execute(id)
}
}
}
}
然后,如果您只是将SQLUtilities._
导入到您希望应用此拉皮条的任何位置,您就可以访问execute
实例上的Database
函数。
如果这不是你想要的,我会事先道歉。