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 都可以
这边的做法不太好...下次试着用插件扩展一下这篇博文 现在内容很少 请见谅~