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数据库的问题的更多相关文章

  1. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

  2. Tomcat通过JNDI方式链接MySql数据库

    原文:Tomcat通过JNDI方式链接MySql数据库 拷贝MySQL的JDBC驱动到Tomcat的lib路径下 配置全局数据源或者单个Web应用的局部数据源 局部数据源 在Tomcat的conf/C ...

  3. C# 链接MySql数据库

    C# 链接MySql数据库只得注意的几点: 1.C#链接MySql数据库要在网上下载一个mysql-connector-net-6.0.4-noinstall.rar  这里面放的都是一堆dll .将 ...

  4. 写给小白的JAVA链接MySQL数据库的步骤(JDBC):

    作为复习总结的笔记,我罗列了几个jdbc步骤,后边举个简单的例子,其中的try块请读者自行处理. /* * 1.下载驱动包:com.mysql.jdbc.Driver;网上很多下载资源,自己找度娘,此 ...

  5. Java链接MySQL数据库的用配置文件和不用配置文件的代码

    1.利用配置文件(db.properties)链接MySQL数据库 package tool; import java.io.FileInputStream;import java.sql.Conne ...

  6. SQLServer 远程链接MySql数据库详解

    SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...

  7. Java基于jdbc链接mysql数据库步骤示列

    用JDBC来链接MYSQL数据库,基本步骤都大同小异,只不过不同的数据库之间的URL地址有些不同.其基本步骤可分为以下几点: 1.加载相应的数据库的JDBC驱动程序. 2.利用驱动管理器DriverM ...

  8. jmeter链接mysql数据库

    一.下载与MySQL对应的jar包 1.1.查询MySQL的版本, 命令语句 :SELECT VERSION(); 1.2.MySQL官网下载jar包 ,https://downloads.mysql ...

  9. 用PHP链接mysql数据库

    PHP提供了两套数据库可用于访问mysql数据库 1)MySQL扩展函数数据库 2)MySQLI扩展数据库(improved) 使用MySQLI函数访问MySQL数据库步骤 1)链接数据库管理系统 m ...

随机推荐

  1. 将SQL for xml path('')中转义的字符正常显示

    在工作中出现的发送邮件的时候:因为邮件内容中有链接,并且多个拼接在一起的,于是用了for xml path().       但是,这样显示出来的链接时会将路径中的<,>,&符号转 ...

  2. 利用MYSQL的函数实现用户登录功能,进出都是JSON(第一版)

    以HMAC密钥形式发放密钥令牌 功能如下 1:记录用户的登录的IP地址.时间 2:实现密码错误次数超限后锁定,并提示何时解锁 CREATE DEFINER=`root`@`%` FUNCTION `u ...

  3. 执行webpack-dev-server时,提示端口被占用。

    执行webpack-dev-server时总出错,提示端口被占用.百度了很多答案都不能解决,最后找到了解决方案,如下: webpack-dev-server  --port 8088 使用以上命令修改 ...

  4. Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID

    /** * Returns the identifier of this process's user. * 返回此进程的用户的标识符. */ Log.e(TAG, "Process.myU ...

  5. python基础数据篇

    1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ? 1 names = ['Alex',"Tenglan",' ...

  6. python3 不知文件编码情况下打开文件代码记录

    import chardet path='test.txt' bytes = min(100, os.path.getsize(path)) raw = open(path, 'rb').read(b ...

  7. Open SuSE 安装Python3.6

    1. 下载Python3.6 tar包 去除Modules/Setup文件167行的注释 readline readline.c -lreadline -ltermcap 2. 下载readline- ...

  8. grep -A -B -C 显示抓取的前后几行参数

    我经常用grep找东西,比如用户名和密码.大部分站点和用户名和密码都是在一样的,方便grep查找.有时,为了文本好看,我会放在多行.比如 wikipedia多个语言版本上有多个账号,就放在wikipe ...

  9. 工作流调度器azkaban

    为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 各任务单元之间存在时间先后及前后依赖关系 为了很 ...

  10. leetcode297

    public class Codec { // Encodes a tree to a single string. public string serialize(TreeNode root) { ...