如何使Squeryl工作与玩游戏! 框架?(How to make Squeryl work w

2019-07-29 08:28发布

我想学习如何做一个简单的数据库应用程序与游戏和Squeryl。 我做了从播放教程任务应用程序,但我想改变模型/方案,以便它使用Squeryl代替ANORM。 我一直在寻找不同的教程 ,例子和答案 ,但我还没有真正想出如何做到这一点。

因此,考虑到从源代码播放教程(ScalaTodoList) ; 我该如何着手,使其与Squeryl工作?

进一步来说:

  • 如何实现all() create()delete()方法在我的模型? (我想使用自动递增的ID的任务)
  • 哪个数据库适配器使用目前很难在编码Build.scalaGlobal.scala (见下文)。 我怎样才能使这样的,它会自动使用H2为在Heroku开发/测试和Postgres,喜欢它的游戏教程确实为ANORM?
  • 如何确保它会自动创建我的表?

这是我迄今所做

我已经完成了播放ScalaTodoList教程。

project/Build.scalaobject ApplicationBuild ,我已经添加了依赖关系:

// From the "Squeryl Getting Started tutorial"
val posgresDriver = "postgresql" % "postgresql" % "8.4-702.jdbc4"
val h2 = "com.h2database" % "h2" % "1.2.127"

// From the "Squeryl Getting Started tutorial"
libraryDependencies ++= Seq(
  "org.squeryl" %% "squeryl" % "0.9.5",
  h2
)

// From the Play tutorial
val appDependencies = Seq(
  // Add your project dependencies here,
  "org.squeryl" %% "squeryl" % "0.9.5", // Copied from above so that it compiles (?)
  "postgresql" % "postgresql" % "8.4-702.jdbc4"
)

加入app/Global.scala (从所拍摄的SO答案如上所述,只是改变了适配器H2):

import play.db.DB
import play.api.Application
import play.api.GlobalSettings
import org.squeryl._
import org.squeryl.adapters._

object Global extends GlobalSettings {

  override def onStart(app: Application): Unit =
  {
    SessionFactory.concreteFactory = Some(
      () => Session.create(DB.getDataSource().getConnection(),
        dbAdapter));
  }

  override def onStop(app: Application): Unit =
  {
  }

  val dbAdapter = new H2Adapter(); // Hard coded. Not good.

  }

app/models/Task.scala我增加进口和删除ANORM implemetations all() create()delete() 从Play教程控制器期望的all()方法返回List[Task]

import org.squeryl.PrimitiveTypeMode._
import org.squeryl.Schema
import org.squeryl.annotations.Column

case class Task(id: Long, label: String)

object Task extends Schema {
  val tasks = table[Task] // Inspired by Squeryl tutorial

  def all(): List[Task] = {
          List[Task]() // ??
  }

  def create(label: String) {
// ??
  }

  def delete(id: Long) {
// ??
  }
}

这些文件的剩下一些,因为他们在游戏教程结束。

Answer 1:

下面是一个例子播放2项目,Squeryl:
https://github.com/jamesward/play2bars/tree/scala-squeryl



Answer 2:

“播放斯卡拉”(MEAP)一书对Squeryl集成一章

http://www.manning.com/hilton/



文章来源: How to make Squeryl work with the Play! Framework?