您的位置:首页 > 其它

Play 2.4 and Slick 3.0 Simple Example

2015-07-10 15:16 253 查看
案例示例可以简单参考 play2.4 and Slick 3.0 <helloplay>
Play 2.4 新增对客户端和服务端的错误分别处理机制.如本例在models下增加了一个错误请求处理方法ErrorHandler
然后在配置文件中将此应用到整个工程中
play.http.errorHandler = "models.ErrorHandler"
数据库方面则采用的是Play的Evolutions插件
slick3.x 的数据查询方式相对2.x还用有一点差异,TableQuery的结果为DBIOActions对象,然后执行db.run()生成Future对象进行后续操作slick 3.0 CURD查询示例
import slick.driver.MYSQLDriver.api._

import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future

abstract class GenericDao[E, T <: Table[E], K] {

  val table: TableQuery[T]

  def filterQuery(id: K): Query[T, E, Seq]

  val db = Database.forConfig("h2mem1")

  def fetchAll() =
    db.run(table.result)

  def fetchById(id: K): Future[Seq[E]] =
    db.run(filterQuery(id).result)

  def fetchOneById(id: K): Future[Option[E]] =
    db.run(filterQuery(id).result).map(_.headOption)

  def insert(item: E): Future[Int] =
    db.run(table += item)

  def update(id: K, item: E): Future[Int] =
    db.run(filterQuery(id).update(item))

  def remove(id: K): Future[Int] =
    db.run(filterQuery(id).delete)
对获取的Futuer对象在APP中可以通过map方法获的取值(如本例的findAll方法)
def findAll=Action.async{
   val data=TESTCon.findAll()
    data.map(p=>Ok(Json.toJson(p)))
}
浏览器输入:http://localhost:9000/user/all
查询结果:

[{"name":"yang","id":1},{"name":"yang","id":2},{"name":"yang","id":3},{"name":"yang","id":5},{"name":"yang","id":6}]
7.27 重构大部分代码,将Akka应用到工程中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: