play-slick基础:CRUD操作

Play框架提供了对Slick的集成模块play-slick。本文将介绍从后台数据库到前台请求的的全过程。

一、数据库建模

case class User(name:String, password:String,id:Option[Long] = None)

object User {

  implicit val userWrites: Writes[User] =
    (
      (JsPath \ "name").write[String]
        and (JsPath \ "password").write[String]
        and (JsPath \ "id").writeNullable[Long]
      )(unlift(User.unapply))

  implicit val userReads: Reads[User] = (
    (JsPath \ "name").read[String]
      and (JsPath \ "password").read[String]
      and (JsPath \ "id").readNullable[Long]
    )(User.apply _)

}

注意:id是一个可选的属性,必须放在最后面,否则会导致play在Json转换的时候报错。

建表:mysql. 注意 ID要定义为自动增长的列。

CREATE TABLE USER
(
  ID INT NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(40) NOT NULL,
  PASSWORD VARCHAR(40) NOT NULL,
  PRIMARY KEY(ID)
);

二、Slick schema

import model._
import slick.driver.JdbcProfile
trait UserSchema {
  protected val driver: JdbcProfile
  import driver.api._
  class UserTable(tag: Tag) extends Table[User](tag, "USER") {
    def id = column[Long]("ID", O.PrimaryKey, O.AutoInc)
    def name = column[String]("NAME")
    def password = column[String]("PASSWORD")
    def * = (name, password, id.?) <> (User.tupled, User.unapply _)
  }
}

三、Play Action定义

列出所有的用户

  def usersList = Action.async {
    implicit request => {
      dbConfig.db.run(Users.result).map(res =>
        Ok(Json.toJson(res.toList))
      )
    }
  }

创建一个用户

  def addUser = Action.async(BodyParsers.parse.json) {
    implicit request => {
      val user = request.body.validate[User].get
      val insertQuery = (
        Users returning Users.map(_.id)) += user
      dbConfig.db.run(insertQuery).map {
        result =>
          Ok(Json.toJson(user.copy(id = Some(result))))
      }
    }
  }

删除一个用户

     def deleteUser(id: Long) = Action {
    val query = Users.filter(_.id === id).delete
    dbConfig.db.run(query)
    Ok("ok")
  }

更新一个用户

def updateUser(id: Long) = Action.async(BodyParsers.parse.json) {
    implicit request => {
      val newUser = request.body.validate[User].get
      val query = Users.filter(_.id === newUser.id).update(newUser)
      dbConfig.db.run(query).map {
        result => Ok(Json.toJson(newUser.id))
      }
    }
  }

application.conf配置

slick.dbs.default.driver= "slick.driver.MySQLDriver$"
slick.dbs.default.db.driver="com.mysql.jdbc.Driver"
slick.dbs.default.db.properties.driver="com.mysql.jdbc.Driver"
slick.dbs.default.db.user="root"
slick.dbs.default.db.password="root"
slick.dbs.default.db.url="jdbc:mysql://localhost:3306/xyz?useUnicode=true&characterEncoding=UTF-8"

然后再定义Controller时,直接注入配置好得DB连接就可以了。

class UserApplication @Inject()(dbConfigProvider: DatabaseConfigProvider)
  extends Controller with UserSchema with HasDatabaseConfig[JdbcProfile] {
  val dbConfig = dbConfigProvider.get[JdbcProfile]
  import driver.api._
  val Users = TableQuery[UserTable]
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-Slick是一个基于Vue.js的响应式轮播组件,它基于Slick库,提供了许多强大的轮播功能和选项。以下是Vue-Slick的中文文档: 1. 安装 你可以通过npm安装Vue-Slick: ``` npm install vue-slick --save ``` 2. 引入 在你的Vue组件中,引入Vue-Slick: ``` import VueSlick from 'vue-slick'; ``` 3. 使用 在你的Vue组件中,使用Vue-Slick: ``` <vue-slick :settings="slickOptions"> <div><img src="slide1.jpg"></div> <div><img src="slide2.jpg"></div> <div><img src="slide3.jpg"></div> </vue-slick> ``` 4. 配置选项 你可以通过给Vue-Slick传递一个settings选项来配置它的选项。以下是一些常用的配置选项: ``` slickOptions: { arrows: true, // 显示箭头 dots: true, // 显示小圆点 autoplay: true, // 自动播放 autoplaySpeed: 3000, // 自动播放速度 infinite: true, // 无限循环 speed: 500, // 切换速度 slidesToShow: 3, // 每次显示的幻灯片数量 slidesToScroll: 1, // 滚动数量 responsive: [ { breakpoint: 1024, settings: { slidesToShow: 2, slidesToScroll: 1, infinite: true, dots: true } }, { breakpoint: 600, settings: { slidesToShow: 1, slidesToScroll: 1 } } ] } ``` 5. 事件 Vue-Slick提供了一些事件来处理轮播的交互,以下是一些常用的事件: ``` <vue-slick @beforeChange="beforeChange" @afterChange="afterChange"> ... </vue-slick> methods: { beforeChange: function (oldIndex, newIndex) { console.log('Before change', oldIndex, newIndex); }, afterChange: function (index) { console.log('After change', index); } } ``` 以上就是Vue-Slick的中文文档,希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值