goodriver 2014-05-22
这里简单说下slick2和playframework2在不使用插件情况下的整合
其实这是种不太好的行为 毕竟让两者分离了..
实际使用还是用连接池比较好...嗯 下次补完 连接池还没配置过
先留个爆栈网的链接:
http://stackoverflow.com/questions/15534777/connection-pooling-in-slick
为了方便还是采取先设计好数据库 然后再使用代码生成器来生成实体的做法
关于代码生成器 看第三篇笔记:
具体的使用代码:
import mysql_sourceGen.MySQLSourceCodeGenerator
object model {
def main(args:Array[String])={
MySQLSourceCodeGenerator.main(
Array[String]("scala.slick.driver.MySQLDriver", //slick的驱动
"com.mysql.jdbc.Driver", //驱动
"jdbc:mysql://localhost:3306/wcw_play", //数据库url
"""H:\wcw_sql""", //存放生成实体的位置
"models",//包名
"root",//数据库用户名
"") //数据库密码
)
}
}不用把代码生成器放在项目内 这只是个工具 放在项目外比较好
生成的实体放入项目内
然后配置conf下的application.conf 我们在那里填写数据库的相关属性
db.default.driver=com.mysql.jdbc.Driver db.default.url="jdbc:mysql://localhost:3306/play_blog" db.default.user=root db.default.password=""
因为是分隔的 所以slick对这些配置是不能像anorm那样直接感知的
我们需要写一个专门获取database的工具类让slick能得到连接:
package models
import scala.slick.jdbc.JdbcBackend.Database
import scala.slick.driver.MySQLDriver.simple._
object SlickDB {
val database = Database.forURL(url = play.api.Play.current.configuration.getString("db.default.url").getOrElse(""),
user = play.api.Play.current.configuration.getString("db.default.user").getOrElse(""),
password = play.api.Play.current.configuration.getString("db.default.password").getOrElse(""),
driver = play.api.Play.current.configuration.getString("db.default.driver").getOrElse(""))
}注意第二个导入的包和数据库相关 用什么数据库导入相关的slick的包
使用就很简单了 用SlickDB.database.withSession 或withTransaction 都可以
这边的做法不太好...下次试着用插件扩展一下这篇博文 现在内容很少 请见谅~