0

我有很多格式的查询,
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

注意:query 和 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}被导入

4

1 回答 1

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._的地方,您就可以访问. executeDatabase

如果这不是您想要的,我提前道歉。

于 2013-09-10T13:07:17.433 回答