play+mongodb+scala的项目搭建
2017-06-13 00:00
288 查看
创建Play项目后配置sbt,导入reactiveMongodb:
在application.conf文件中配置Module和Mongodb的地址:
创建数据实体:
mongodb的增删改查:
rout文件的相应配置:
源码地址:https://git.oschina.net/leqisoft/JianBook_scala.git
name := """play-scala""" version := "1.0-SNAPSHOT" scalaVersion := "2.11.8" libraryDependencies += jdbc libraryDependencies += cache libraryDependencies += ws libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test val reactiveMongoVer = "0.12.3" libraryDependencies ++= Seq( // "org.reactivemongo" %% "reactivemongo" % "0.12" "org.reactivemongo" %% "play2-reactivemongo" % reactiveMongoVer ) routesGenerator := InjectedRoutesGenerator fork in run := true lazy val root = (project in file(".")).enablePlugins(PlayScala)
在application.conf文件中配置Module和Mongodb的地址:
play.modules.enabled += "play.modules.reactivemongo.ReactiveMongoModule" mongo-async-driver { akka { loglevel = WARNING } } mongodb.uri = "mongodb://localhost:27017/mydb"
创建数据实体:
ackage entity /** * 用户实体对象 * @param id * @param name * @param password * @param email * @param createDate * @param modifyDate */ case class User(val id:String , val name: String, val password:String, val email:String, val createDate:Long, val modifyDate:Long) object User{ import play.api.libs.json._ implicit object UserWriter extends OWrites[User]{ override def writes(o: User): JsObject = { Json.obj( "_id"->o.id, "name"->o.name, "password"->o.password, "email"->o.email, "createDate"->o.createDate, "modifyDate"->o.modifyDate ) } } implicit object UserReader extends Reads[User]{ override def reads(json: JsValue): JsResult[User] = { json match { case js:JsObject=>try{ val id = (json \ "_id").as[String] val name = (json \ "name").as[String] val password = (json \"password").as[String] val email = (json \"email").as[String] val createDate = (json \ "createDate").as[Long] val modifyDate = (json \ "modifyDate").as[Long] JsSuccess(User(id,name,password,email,createDate,modifyDate)) }catch { case cause:Throwable=>JsError(cause.getMessage) } case _ => JsError("error") } } } }
mongodb的增删改查:
package controllers import java.util.UUID import javax.inject.{Inject, Singleton} import entity.User import play.api._ import play.api.mvc._ import play.modules.reactivemongo.{MongoController, ReactiveMongoApi, ReactiveMongoComponents} import play.api.libs.concurrent.Execution.Implicits.defaultContext import play.api.libs.json.Json import reactivemongo.api.QueryOpts import reactivemongo.bson.BSONDocument import reactivemongo.play.json._ import reactivemongo.play.json.collection._ /** * Created by zhuleqi on 2017/3/22. */ class UserController @Inject() (val reactiveMongoApi: ReactiveMongoApi) extends Controller with MongoController with ReactiveMongoComponents { /** * 获取mongoDb的collection * @return */ def userCollection = reactiveMongoApi.database. map(_.collection[JSONCollection]("user")) def regist()=Action{ Ok(views.html.userRegist("用户注册")) } /** *插入用户 * @param name * @param passowrd * @param email * @return */ def insert(name:String,passowrd:String,email:String)=Action.async{ var user = User(UUID.randomUUID().toString, name, passowrd, email, System.currentTimeMillis(), System.currentTimeMillis() ) userCollection.flatMap(_.insert(user)).map(wr =>Ok(user.toString)) } /** * 更新User的Email * @param id * @param email * @return */ def update(id:String,email:String) = Action.async{ userCollection.flatMap(_.update(Json.obj("_id"->id),Json.obj("$set"->Json.obj("email"->email)))).map(ss=>{ Ok("ok") }) } /** *根据ID查找用户 * @param id * @return */ def find(id:String)=Action.async{ userCollection.flatMap(_.find(Json.obj("_id"->id)).cursor[User]().collect[List]()).map(users=>{ Ok(users.head.toString); }) } /** * 删除用户 * @param id * @return */ def remove(id:String) =Action.async{ userCollection.flatMap(_.remove(Json.obj("_id"->id))).map(findMS =>{ Ok("delete ok") }) } /** * 分页查找用户列表 * @param page * @param pageSize * @return */ def findAll(page:Int,pageSize:Int) = Action.async{ val startIndex = pageSize*(page-1); val endIndex = pageSize*page userCollection.flatMap(_.find(Json.obj()).options(QueryOpts(skipN =startIndex ,batchSizeN = pageSize)).cursor[User]().collect[List](pageSize)).map(users=>{ var userStr = "" for (user <- users){ userStr+=user.toString } Ok(userStr) }) } def login(name:String,password:String) = Action{ Ok("") } }
rout文件的相应配置:
POST /user/insert controllers.UserController.insert(name:String?="",password:String?="",email:String?="") GET /user/find/:id controllers.UserController.find(id:String) GET /user/findAll/:page/:pageSize controllers.UserController.findAll(page:Int,pageSize:Int) GET /user/update controllers.UserController.update(id:String ?="",email:String ?="") GET /user/remove/:id controllers.UserController.remove(id:String) GET /user/regist controllers.UserController.regist()
源码地址:https://git.oschina.net/leqisoft/JianBook_scala.git
相关文章推荐
- play+mongodb+scala的项目搭建
- Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog
- Play之Scala-Web项目运行流程-简单分析(2)
- Spring MVC + MongoDB + Maven搭建项目开发环境
- 【转】MEAN:Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog
- Ubuntu+Spark+IDEA+SBT+scala项目搭建流程记录
- ubuntu下搭建nginx+scala+play 2.0运行环境的方法介绍
- 8 步搭建 Node.js + MongoDB 项目的自动化持续集成
- 用AWS、Scala、Akka、Play、MongoDB和Elasticsearch构建社交音乐服务
- 搭建简单的node+express+mongodb项目
- Play之Scala-Web项目运行流程-简单分析(3)
- 使用nodejs、mongodb、express、linux搭建社区网站(2)之项目创建及app.js生成
- springmvc+mongodb+maven 项目搭建配置
- 8 步搭建 Node.js + MongoDB 项目的自动化持续集成
- springmvc+mongodb+maven 项目搭建配置
- Play之Scala-Web项目运行流程-简单分析(1)
- scala+play2.2.2+slick2.0.2 + mysql5.0整合之一---基础环境搭建篇
- Play之Scala-Web项目运行流程-简单分析(2)
- 转】[1.0.2] 详解基于maven管理-scala开发的spark项目开发环境的搭建与测试
- 搭建简单的node+express+mongodb项目