在Play项目中,如果你无法导入play.db
,可能是因为你正在使用的Play框架版本与play.db
的包路径不匹配。从Play 2.0开始,Play框架的数据访问层已经发生了变化,play.db
已经被移除,取而代之的是使用JPA(Java Persistence API)和Slick等数据库访问库。
以下是一些步骤来帮助你在Play项目中正确设置和使用数据库:
首先,确保你的build.sbt
文件中包含了正确的数据库访问库依赖。例如,如果你使用的是Slick,你需要添加以下依赖:
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-slick" % "x.y.z", // 使用最新的版本号替换x.y.z
"com.typesafe.play" %% "play-slick-evolutions" % "x.y.z"
)
在application.conf
文件中配置你的数据库连接信息:
slick.dbs.default.profile = "slick.jdbc.PostgresProfile$"
slick.dbs.default.db.driver = "org.postgresql.Driver"
slick.dbs.default.db.url = "jdbc:postgresql://localhost:5432/mydatabase"
slick.dbs.default.db.user = "myuser"
slick.dbs.default.db.password = "mypassword"
创建一个Scala对象来定义你的数据库模型和表映射。例如:
import slick.jdbc.PostgresProfile.api._
case class User(id: Long, name: String)
class Users(tag: Tag) extends Table[User](tag, "users") {
def id = column[Long]("id", O.PrimaryKey)
def name = column[String]("name")
def * = (id, name) <> (User.tupled, User.unapply)
}
val users = TableQuery[Users]
在你的控制器或其他服务中使用定义好的数据库模型进行数据库操作:
import javax.inject._
import play.api.db.slick.DatabaseConfigProvider
import slick.jdbc.JdbcProfile
import scala.concurrent.Future
@Singleton
class UserController @Inject()(cc: ControllerComponents, protected val dbConfigProvider: DatabaseConfigProvider) extends AbstractController(cc) {
private val dbConfig = dbConfigProvider.get[JdbcProfile]
def createUser(name: String) = Action.async {
val users = TableQuery[Users]
val insertAction = users += User(0, name)
val result = dbConfig.db.run(insertAction)
result.map(_ => Ok("User created"))
}
}
application.conf
中进行相应的配置。领取专属 10元无门槛券
手把手带您无忧上云