scala+play2.2.2+slick2.0.2 + mysql5.0整合之一基础环境搭建篇

scala+play2.2.2+slick2.0.2 + mysql5.0整合之一基础环境搭建篇
 
因为博主也没有折腾过play,slick这些玩意,这周的时候想折腾这么一套开发环境,于是就折腾了一番,终于还是成功了,于是把整个步骤都贴出来,与大家分享,期间踩过的坑,直接跳过。




前提: 假设你配置好了scala,play的环境变量,如果这样都有问题,请自行Google,百度




从命令行进入到你的工作目录(workspace),执行play new helloworld。等命令执行完,项目(helloworld)就创建成功了。关于项目的结构,也不多讲网上也有很多这样的文章。
cd helloworld, 进入项目根目录,执行play,再执行idea,这个命令是生成导入idea开发工具所需要的文件和结构,然后可以用idea将项目导入了。
在项目根目录下执行 run, 把项目启动,在本地访问http://localhost:9000/。  看项目是否成功启动。那这样一个纯的play项目就跑起来了。
在项目根目录下的build.sbt中,加入slick和mysql驱动。
libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  "mysql" % "mysql-connector-java" % "5.1.18",
  "com.typesafe.slick" %% "slick" % "2.0.2",
  "org.slf4j" % "slf4j-nop" % "1.6.4"
)


然后ctrl+D 停掉服务,输入play,再执行reload。让项目加载本次改动,引入相关依赖的jar包。
在项目根目录/conf/application.conf中,加入如下数据库连接信息内容
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://172.16.0.90:3306/test?characterEncoding=UTF-8"
db.default.user="root"
db.default.password="root"


基本的配置信息到这就算完成了,接下来我们就要测试,整个环境是否有问题了。我选择的是plain SQL的方式(即原生sql的方式)
建一张数据库表来做测试,就叫帐号表,用户名,密码:
CREATE TABLE `T_ACCOUNT` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`username`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password`  varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`isAdmin`  int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=4
ROW_FORMAT=COMPACT
;


在Scala中,建好实体,来做映射
case class Account(id : Int,username:String,password:String,isAdmin:Boolean)


创建好数据库对象
package models


/
 * Created by Administrator on 2014/8/11.
 */


import scala.slick.jdbc.JdbcBackend.Database
import play.api.Play.current


object MyDatabase {




  /
   * init configuration from application.conf.
   * <b>Only user in play Application</b>
   */
  private val conf = current.configuration


  private val dbUrl = conf.getString("db.default.url").getOrElse("")


  private val user = conf.getString("db.default.user").getOrElse("root")


  private val pwd = conf.getString("db.default.password").getOrElse("root")


  private val driverClass = conf.getString("db.default.driver").getOrElse("com.mysql.jdbc.Driver")


  /
   * create the database instance  with configuration
   */
  val database = Database.forURL(dbUrl, user, pwd, driver = driverClass)




}


接下来,我们就操作编写一个数据库操作类
object Account{


  private val mdb = MyDatabase.database


val resultParser = GetResult[Account](r => Account(r.<<, r.<<, r.<<, r.<<))


 def allAccounts():Seq[Account]={
   val sql= "select * from t_account"
    mdb.withSession{
      implicit session=>
        StaticQuery.queryNA[Account](sql).list()
    }
  }


}


然后我们再编写一个Controller进行验证,将结果打成Json,这样免得编写界面。
package controllers


import play.api.mvc.Controller
import models.Account
import play.api.mvc.Action
import play.api.libs.json._


/
 * Created by Administrator on 2014/8/11.
 */
object AccountController extends Controller {


  implicit val AccountFormat = Json.format[Account]


  def listAll = Action {
    implicit request =>
      val list = Account.allAccounts
      val json = Json.toJson(list)
      Ok(json).as("application/json")
  }
}


然后在项目根目录/conf/routes中增加一个路由配置:
GET         /accounts              controllers.AccountController.listAll


然后在命令行中执行play,再执行run.  在浏览器中输入:http://localhost:9000/accounts,整个Json串就打印出来了。说明整个环境是成功了。




整个过程中主要有以下几点感悟:
对于新技术,以前完全没有接触过的东西,不要有畏难心理,用心一定可以搞定。
善用身边的资源,整个过程中向身边的朋友请教了不少东西,用好Google。

scala的版本问题,真是一个大问题,发展太快。 所以框架选型的时候,一定要先搞清楚版本,要不然会被版本问题搞死搞残。


转自:http://www.jeepshoe.org/646668842.htm

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值