scala+play+slick + mysql

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


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

  5. 然后ctrl+D 停掉服务,输入play,再执行reload。让项目加载本次改动,引入相关依赖的jar包。
  6. 在项目根目录/conf/application.conf中,加入如下数据库连接信息内容
    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. db.default.driver=com.mysql.jdbc.Driver  
    2. db.default.url="jdbc:mysql://172.16.0.90:3306/test?characterEncoding=UTF-8"  
    3. db.default.user="root"  
    4. db.default.password="root"  

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

  9. 在Scala中,建好实体,来做映射
    [java]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. case class Account(id : Int,username:String,password:String,isAdmin:Boolean)  

  10. 创建好数据库对象
    [java]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. package models  
    2.   
    3. /** 
    4.  * Created by Administrator on 2014/8/11. 
    5.  */  
    6.   
    7. import scala.slick.jdbc.JdbcBackend.Database  
    8. import play.api.Play.current  
    9.   
    10. object MyDatabase {  
    11.   
    12.   
    13.   /** 
    14.    * init configuration from application.conf. 
    15.    * <b>Only user in play Application</b> 
    16.    */  
    17.   private val conf = current.configuration  
    18.   
    19.   private val dbUrl = conf.getString("db.default.url").getOrElse("")  
    20.   
    21.   private val user = conf.getString("db.default.user").getOrElse("root")  
    22.   
    23.   private val pwd = conf.getString("db.default.password").getOrElse("root")  
    24.   
    25.   private val driverClass = conf.getString("db.default.driver").getOrElse("com.mysql.jdbc.Driver")  
    26.   
    27.   /** 
    28.    * create the database instance  with configuration 
    29.    */  
    30.   val database = Database.forURL(dbUrl, user, pwd, driver = driverClass)  
    31.   
    32.   
    33. }  

  11. 接下来,我们就操作编写一个数据库操作类
    [java]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. object Account{  
    2.   
    3.   private val mdb = MyDatabase.database  
    4.   
    5. val resultParser = GetResult[Account](r => Account(r.<<, r.<<, r.<<, r.<<))  
    6.   
    7.  def allAccounts():Seq[Account]={  
    8.    val sql= "select * from t_account"  
    9.     mdb.withSession{  
    10.       implicit session=>  
    11.         StaticQuery.queryNA[Account](sql).list()  
    12.     }  
    13.   }  
    14.   
    15. }  

  12. 然后我们再编写一个Controller进行验证,将结果打成Json,这样免得编写界面。
    [java]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. package controllers  
    2.   
    3. import play.api.mvc.Controller  
    4. import models.Account  
    5. import play.api.mvc.Action  
    6. import play.api.libs.json._  
    7.   
    8. /** 
    9.  * Created by Administrator on 2014/8/11. 
    10.  */  
    11. object AccountController extends Controller {  
    12.   
    13.   implicit val AccountFormat = Json.format[Account]  
    14.   
    15.   def listAll = Action {  
    16.     implicit request =>  
    17.       val list = Account.allAccounts  
    18.       val json = Json.toJson(list)  
    19.       Ok(json).as("application/json")  
    20.   }  
    21. }  

  13. 然后在项目根目录/conf/routes中增加一个路由配置:
    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. GET         /accounts              controllers.AccountController.listAll  

  14. 然后在命令行中执行play,再执行run.  在浏览器中输入:http://localhost:9000/accounts,整个Json串就打印出来了。说明整个环境是成功了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值