我尝试使用Slick in Play定义查询以按ID搜索行。我试图理解这一切是如何工作的,所以我实际上可以开发这个东西,而不是盲目地写我在网上发现的任何东西。这让我想找到什么' db'所有这些例子中的对象都是。
class UserDao @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
private class UsersTable(tag: Tag) extends Table[User](tag, "users") {
def id = column[Int]("id", O.AutoInc, O.PrimaryKey)
def name = column[String]("name")
def age = column[Int]("age")
def email = column[String]("email")
def * = (name, age, email) <> (User.tupled, User.unapply _)
}
private val Users = TableQuery[UsersTable]
def all: Future[Seq[User]] = db.run(Users.result)
def insert(user: User): Future[Unit] = db.run(Users += user).map { _ => () }
def read(id: Int): Future[User] = db.run(for (user <- Users; if user.id === id) yield user)
}
价值在哪里&#39; db&#39;来自&#39; db.run(...)&#39;来自?我在DatabaseConfigProvider源代码中找到了这一行,但我不理解它。
protected final def db: P#Backend#Database = dbConfig.db
dbConfig是一个DatabaseConfig对象,但是文档不会显示“db”和“db”。该对象上的value成员。
我正在使用PostgreSQL数据库,以防万一。我不这么认为,但我会在完整性的基础上添加这些细节。
我不知道这是从哪里来的,有人可以解释一下吗?