使用Slick Use Conf File喷涂IO

时间:2014-04-13 03:43:37

标签: scala slick spray

我正在使用Spray with Slick。喷雾实际上非常容易使用,Slick也是如此。然而,臭名昭着的Slick方式连接数据库就像:

  Database.forURL("jdbc:mysql://localhost:3306/SprayBlog?characterEncoding=UTF-8", user="xxxx", password="xxx", driver = "com.mysql.jdbc.Driver") withSession {
    implicit session =>

      (Article.articles.ddl ++ User.users.ddl).create
  }

每次进行数据库连接时,我都讨厌打字。我之前使用过Play-Slick框架,Play有application.conf,我可以使用它来存储我的数据库连接地址,用户名和密码。我不知道这是否属实,但是人们不应该将他们的数据库信息存储在加密文件上,我可能错了,但我觉得conf被阻止从外部访问并加密。

那么有没有办法让我更轻松地调用数据库操作?如果我想将信息放在conf中,我该如何访问它?

2 个答案:

答案 0 :(得分:2)

使用Slick 2.1.0,您可以使用Database.forConfig()

在application.conf中:

db {
    url = "jdbc:mysql://localhost/DatabaseName"
    driver = "com.mysql.jdbc.Driver"
    user = "root"
    password = ""
}

在您的数据库访问代码中:

import scala.slick.driver.MySQLDriver.simple._
import models.Item
import tables.ItemTable

class ItemService {

  val items = TableQuery[ItemTable]

  def all: List[Item] = Database.forConfig("db") withSession { implicit session: Session =>
    items.list
  }
}

答案 1 :(得分:0)

将您的数据库存储在val中,或者编写一个def,其中包含您认为重复的内容。 withSession适用于连接范围。我不知道喷涂conf文件,但他们可能使用Typesafe配置,这是一个允许读取文件的库。 Spray可能还通过api暴露其配置。