playframework链接MySQL数据库的问题
Scala 在米国已经发展的如火如荼,有些人甚至说Scala将成为未来语言的头号交椅。简洁的代码和表达式的写法让很多人倍感舒适,函数式和面向对象的编程范式也让其能在多种场合游刃有余的被使用。加之它是跑在JVM虚拟机上的,可以完美的调用java,让很多现存的技术可以继续保留,降低了维护成本。但是,Scala过度复杂的语法也让无数开发者头疼,知乎上有人说他是“全宇宙最难学的语言”,我想说“呵呵”,事在人为嘛,我们要有“铁杵磨成针”的态度,不会的慢慢学,年轻就应该这么任性!!
好了,扯了这么多废话,让我们进入主题:如何使用playframework 来连接数据库。playframework是当下比较流行的开发框架,java和Scala都可以使用,但是Scala用的比较多一点。在这里我用的是Scala。
正式开始:
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文档
http://slick.typesafe.com/docs/。利用models,实现数据的增删改查。
当然喽还有其他方式可以实现数据库的链接,但是个人感觉这是最好的方式。typeSafe中的给的几个例子都是基于DBAction的,个人感觉这样有些弊端,因为如果用DBAction的话,controller层和model层就不紧密结合了,不符合play本身MVC的设计模式。
以上。
playframework链接MySQL数据库的问题的更多相关文章
- Python学习笔记9-Python 链接MySql数据库
Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...
- Tomcat通过JNDI方式链接MySql数据库
原文:Tomcat通过JNDI方式链接MySql数据库 拷贝MySQL的JDBC驱动到Tomcat的lib路径下 配置全局数据源或者单个Web应用的局部数据源 局部数据源 在Tomcat的conf/C ...
- C# 链接MySql数据库
C# 链接MySql数据库只得注意的几点: 1.C#链接MySql数据库要在网上下载一个mysql-connector-net-6.0.4-noinstall.rar 这里面放的都是一堆dll .将 ...
- 写给小白的JAVA链接MySQL数据库的步骤(JDBC):
作为复习总结的笔记,我罗列了几个jdbc步骤,后边举个简单的例子,其中的try块请读者自行处理. /* * 1.下载驱动包:com.mysql.jdbc.Driver;网上很多下载资源,自己找度娘,此 ...
- Java链接MySQL数据库的用配置文件和不用配置文件的代码
1.利用配置文件(db.properties)链接MySQL数据库 package tool; import java.io.FileInputStream;import java.sql.Conne ...
- SQLServer 远程链接MySql数据库详解
SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...
- Java基于jdbc链接mysql数据库步骤示列
用JDBC来链接MYSQL数据库,基本步骤都大同小异,只不过不同的数据库之间的URL地址有些不同.其基本步骤可分为以下几点: 1.加载相应的数据库的JDBC驱动程序. 2.利用驱动管理器DriverM ...
- jmeter链接mysql数据库
一.下载与MySQL对应的jar包 1.1.查询MySQL的版本, 命令语句 :SELECT VERSION(); 1.2.MySQL官网下载jar包 ,https://downloads.mysql ...
- 用PHP链接mysql数据库
PHP提供了两套数据库可用于访问mysql数据库 1)MySQL扩展函数数据库 2)MySQLI扩展数据库(improved) 使用MySQLI函数访问MySQL数据库步骤 1)链接数据库管理系统 m ...
随机推荐
- 黄聪:微信URL Scheme,URL唤起微信
微信URL Scheme 在外部浏览器中,可以通过<a href="weixin://">打开微信APP 也可以通过加一些参数,打开微信APP里的指定页面 <a ...
- PHP 获取数组是几维数组
// 判断数组是几维数组$data = array(); // 是你要判断的数组$al = array(0);function aL($data,&$al,$level=0){ if(is_a ...
- 模拟SQL用户 EXECUTE AS USER
EXECUTE AS USER= @domain SELECT SUSER_NAME(), USER_NAME(); REVERT 以下语句可以模拟SQL用户,具体使用场景自行脑补.
- 小程序打开pdf
wx.downloadFile({ url:"https://xxxxxx.pdf", success(res){ console.log(res) let data = res. ...
- python3:实现字符串的全排列(有重复字符)
抛出问题 求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321. 解决方案 #字符串任意两个位置字符交换 def str_replace(str, x ...
- EasyARM-iMX283A的U盘使用教程
在编写代码前我们先来EasyARM-iMX283A对U盘使用的操作. 我们先拿一个U盘进行格式化 在U盘中写一些文件保存后,弹出U盘. 将U盘插入EasyARM-iMX283A的开发板. [注意]Ea ...
- 模拟器 Unable to execute simctl install Error 117
ios 模拟器 Unable to execute '"/usr/bin/xcrun" simctl install "/Users/tt/PAServer/scrat ...
- JPA中建立数据库表和实体间映射小结
在JPA中,映射数据库表和实体的时候,需要注意一些细节如下, 实体类要用@Entity的注解: 要用 @Id 来注解一个主键: 如果跟数据库相关联,要用@Table注解相关数据库表: 实体类中字段需要 ...
- ORM的相关操作
http://www.cnblogs.com/liwenzhou/p/8660826.html
- 使用rpm-build制作nginx的rpm包
2014-11-27 11:05:49 一.RPM包的分类 RPM有五种基本的操作功能:安装.卸载.升级.查询和验证. linux软件包分为两大类: (1)二进制类包,包括rpm安装包(一般分为i ...