Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在哪里可以定义要在表上调用的方法?_Scala_Slick_Slick 2.0 - Fatal编程技术网

Scala 在哪里可以定义要在表上调用的方法?

Scala 在哪里可以定义要在表上调用的方法?,scala,slick,slick-2.0,Scala,Slick,Slick 2.0,(我是Scala和Slick的完全初学者,因此任何类型的代码审查都值得赞赏) 我定义了以下类和Slick表: case class Foo(title: String, description: String, id: Int = 0) class FooTable(tag: Tag) extends Table[Foo](tag, "FOO") { def id = column[Int]("ID", O.PrimaryKey, O.AutoInc) def title = col

(我是Scala和Slick的完全初学者,因此任何类型的代码审查都值得赞赏)

我定义了以下
和Slick

case class Foo(title: String, description: String, id: Int = 0)

class FooTable(tag: Tag) extends Table[Foo](tag, "FOO") {

  def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
  def title = column[String]("TITLE", O.NotNull)
  def description = column[String]("DESCRIPTION")

  def * = (title, description, id) <> (Foo.tupled, Foo.unapply)
}
然后我就可以使用这样的方法:

def findByTitle(title: String) = DB.withSession { implicit s: Session =>
  <FooTable TableQuery>.filter(_.title === title)
}
val foos = TableQuery[FooTable]
DB.withSession { implicit s: Session =>
  val anId = foos.findByTitle("bar")
}

如何/在何处添加可对特定
表的
表查询
执行操作的方法?这是安排我的应用程序的正确方法吗?

我想你想要的是引入一个DAO(数据访问对象),根据你的需要,你可以让
FooTable
类的伴生对象是DAO,它可以让你从你的代码库的其余部分调用
FooTable.findbytle()

implicit class FooTableExtensions(q: Query[FooTable,Foo]){
  def findByTitle(t: String) = q.filter(_.title === t)
}

foos.findByTitle("Bar")
请参阅Scala eXchange 2013 talk我们的网站


对于预编译的查询,有一个DAO可能很有用,您可以在其中缓存预编译的查询。参见Scala Days 2013年讲座。但从那时起,语法发生了变化。查看手册中的
已编译

谢谢,这很有意义!Re:Scala Days 2013,你是说Slick vs ORM的话题吗?我的体系结构的发展得益于各种来源关于使用DAO的建议。我现在尝试在不同的环境中处理相同的问题:。如果你有时间,我会感谢你的帮助!感谢DAO的帮助-我可以看到使用DAO带来的好处。我的体系结构的发展得益于各种来源关于使用DAO的建议。我现在尝试在不同的环境中处理相同的问题:。如果你有时间,我会感谢你的帮助!