加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何使Squeryl与Play一起工作!框架?

发布时间:2020-12-16 09:00:04 所属栏目:安全 来源:网络整理
导读:我正在尝试学习如何使用Play和Squeryl创建一个简单的数据库应用程序.我已经从Play教程制作了任务应用程序,但我想更改模型/架构,以便它使用Squeryl而不是Anorm.我一直在寻找不同的 tutorials,例子和 answers,但我还没有弄清楚如何做到这一点. 所以,鉴于Play T
我正在尝试学习如何使用Play和Squeryl创建一个简单的数据库应用程序.我已经从Play教程制作了任务应用程序,但我想更改模型/架构,以便它使用Squeryl而不是Anorm.我一直在寻找不同的 tutorials,例子和 answers,但我还没有弄清楚如何做到这一点.

所以,鉴于Play Tutorial (ScalaTodoList)的源代码;如何使其与Squeryl一起使用?

进一步来说:

>如何在模型中实现all(),create()和delete()方法? (我想为任务使用自动递增ID)
>使用哪个数据库适配器目前在Build.scala和Global.scala中进行了硬编码(见下文).我怎样才能使它自动使用H2进行开发/测试和Heroku上的Postgres,就像在Play教程中对Anorm一样?
>我如何确保它自动创建我的表?

这就是我到目前为止所做的

我已经完成了Play ScalaTodoList教程.

在project / Build.scala,对象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 answer,只是将适配器更改为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中我添加了导入并删除了all(),create()和delete()中的Anorm实现.
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) {
// ??
  }
}

其余文件保留在Play教程结尾处.

解决方法

以下是Squeryl的Play 2项目示例:
https://github.com/jamesward/play2bars/tree/scala-squeryl

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读