jpa.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect
db.driver=org.postgresql.Driver
1、首先创建一个工程,名字为:HelloWorld;不建议用IDE创建,因为现在IntelliJ idea和Eclipse做的Scala插件还不够好用,开发中会出现很多问题,建议用typeSafe魔板创建。
2、打开工程的bulid.sbt文件;加上这么一句:
3、然后将mysql的驱动也加上
sbt中加入了新的依赖以后,一定要记得refresh一下,这样sbt才能将新加的东西加入。
4、接下来,我们打开conf/application.conf文件,
将自己的数据库链接信息添上去。
注意,如果想链接多个数据源,只需要修改“db.default.driver”就可以,注意“db.default.driver”中“default”是数据源的名字,可以修改。例如,你想创建一个“abc”数据源,就可以写成“db.abc.driver”
,在代码中获取数据源的时候,就写成DB.getDataSource("abc"),如果想获取默认数据源(default),可以直接写成DB.getDataSource(),因为:
这是源码,显而易见了吧。而且通过源码,可以知道,play用的数据库链接池是BoneCP,这是一个很棒的数据库连接池,比DBCP和C3P0要快很多,但是没有HikariCP快,BoneCP的官方文档是这么说的:“It beats older connection pools such as C3P0 and DBCP but should now be considered deprecated in favour of HikariCP”不知道play以后会不会使用HikariCP作为数据库连接池。而且,play的数据库连接池是写死的,没法通过application.conf扩展数据库连接池(可以用其他途径扩展,如自己在sbt中依赖数据库连接池,然后不通过配置文件,用数据库本身的方法来获取数据源实现连接。),个人感觉应该改良一下,呵呵,勿拍砖,已包扎。
6、用play自带的连接池链接数据库
创建一个Db object,在object中写一个函数(或者一个成员变量也可以),获取数据源,连接数据库。
注意,一定要“import scala.slick.driver.MySQLDriver.simple._”和“import play.api.Play.current”,特别是后者,非常容易忘,因为“DB.getDataSource()”会需要一个隐式参数(第五步的源码图中可以看到),所以即使漏“play.api.Play.current”在IDE里编写也不会出错。
7、根据自己的数据库表,生成models(或者根据entity生成数据库表也可以)。如何生成可以查看slick文档。利用models,实现数据的增删改查。
当然喽还有其他方式可以实现数据库的链接,但是个人感觉这是最好的方式。typeSafe中的给的几个例子都是基于DBAction的,个人感觉这样有些弊端,因为如果用DBAction的话,controller层和model层就不紧密结合了,不符合play本身MVC的设计模式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)