scala+play+slick + mysql
2016-07-10 09:20
465 查看
前提: 假设你配置好了scala,play的环境变量,如果这样都有问题,请自行Google,百度
从命令行进入到你的工作目录(workspace),执行play new helloworld。等命令执行完,项目(helloworld)就创建成功了。关于项目的结构,也不多讲网上也有很多这样的文章。
cd helloworld, 进入项目根目录,执行play,再执行idea,这个命令是生成导入idea开发工具所需要的文件和结构,然后可以用idea将项目导入了。
在项目根目录下执行 run, 把项目启动,在本地访问http://localhost:9000/。 看项目是否成功启动。那这样一个纯的play项目就跑起来了。
在项目根目录下的build.sbt中,加入slick和mysql驱动。
[html] view
plain copy
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中,加入如下数据库连接信息内容
[html] view
plain copy
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的方式)
建一张数据库表来做测试,就叫帐号表,用户名,密码:
[sql] view
plain copy
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中,建好实体,来做映射
[java] view
plain copy
case class Account(id : Int,username:String,password:String,isAdmin:Boolean)
创建好数据库对象
[java] view
plain copy
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)
}
接下来,我们就操作编写一个数据库操作类
[java] view
plain copy
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,这样免得编写界面。
[java] view
plain copy
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中增加一个路由配置:
[html] view
plain copy
GET /accounts controllers.AccountController.listAll
然后在命令行中执行play,再执行run. 在浏览器中输入:http://localhost:9000/accounts,整个Json串就打印出来了。说明整个环境是成功了
从命令行进入到你的工作目录(workspace),执行play new helloworld。等命令执行完,项目(helloworld)就创建成功了。关于项目的结构,也不多讲网上也有很多这样的文章。
cd helloworld, 进入项目根目录,执行play,再执行idea,这个命令是生成导入idea开发工具所需要的文件和结构,然后可以用idea将项目导入了。
在项目根目录下执行 run, 把项目启动,在本地访问http://localhost:9000/。 看项目是否成功启动。那这样一个纯的play项目就跑起来了。
在项目根目录下的build.sbt中,加入slick和mysql驱动。
[html] view
plain copy
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中,加入如下数据库连接信息内容
[html] view
plain copy
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的方式)
建一张数据库表来做测试,就叫帐号表,用户名,密码:
[sql] view
plain copy
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中,建好实体,来做映射
[java] view
plain copy
case class Account(id : Int,username:String,password:String,isAdmin:Boolean)
创建好数据库对象
[java] view
plain copy
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)
}
接下来,我们就操作编写一个数据库操作类
[java] view
plain copy
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,这样免得编写界面。
[java] view
plain copy
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中增加一个路由配置:
[html] view
plain copy
GET /accounts controllers.AccountController.listAll
然后在命令行中执行play,再执行run. 在浏览器中输入:http://localhost:9000/accounts,整个Json串就打印出来了。说明整个环境是成功了
相关文章推荐
- Windows下Scala环境搭建
- Windows7下安装Scala 2.9.2教程
- Scala代码实现列出Hadoop 文件夹下面的所有文件
- ClassNotFoundException:scala.PreDef$
- sbt创建web项目
- XML 文件解析--含Unicode字符的XML文件
- Scala 学习随笔
- Scala 小程序记录(学习期间的代码片段)
- Spark机器学习(二) 局部向量 Local-- Data Types - MLlib
- Spark机器学习(三) Labeled point-- Data Types
- 分分钟掌握快速排序(Java / Scala 实现)
- Scala极速入门
- Spark初探
- Scala实现REST操作
- Scala method call syntax
- 关于Scala多重继承的菱形问题
- Scala 高阶函数(high-order function)剖析
- Scala Monad Design Pattern
- Scala类型系统——高级类类型(higher-kinded types)
- Spray.io搭建Rest服务