Play 2.4 and Slick 3.0 Simple Example

案例示例可以简单参考 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应用到工程中

转载于:https://my.oschina.net/jinfu/blog/477049

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值