我正在开展一个小项目,需要解析一些数据并将其存储到数据库中。我没有使用Lift框架,并且没有找到标准的方法来完成此项任务。
我可以自己编写查询语句,但是我不知道要使用什么工具来连接数据库。
请查看https://stackoverflow.com/questions/1362748/looking-for-a-comparison-of-scala-persistence-frameworks,了解有关这些框架的更多信息。
case class MyObj(name: String, year: Int)
val ds = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource
// set properties on ds
import org.orbroker._
val builder = new BrokerBuilder(ds)
val broker = builder.build
val myObj: MyObj = // Parse stuff to create MyObj instance
broker.transaction() { session =>
session.execute("INSERT INTO MYTABLE VALUES(:obj.name, :obj.year)", "obj"->myObj)s
}
val myObjs: Seq[MyObj] = // Parse stuff to create sequence of MyObj instances
broker.transaction() { session =>
session.executeBatch("INSERT INTO MYTABLE VALUES(:obj.name, :obj.year)", "obj"->myObjs)
}
为了完整性,还要查看RichSQL。 这是演示如何包装JDBC以进行更具Scala风格的操作的演示代码,但实际上它非常可用。 它的优点是简单而小巧,因此您可以轻松地学习源代码以了解发生了什么。 不要忘记关闭()您的PreparedStatements。
import scalikejdbc._
Class.forName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource")
ConnectionPool.singleton("jdbc:mysql://localhost:3306/myschema", "user", "password")
DB.localTx { implicit conn =>
val data = sql"select mystringcol, myintcolumn from mytable".map {
rs => (rs.string("mystringcol"), rs.int("myintcolumn"))
}.list().apply()
println(data)
}
一些文档链接: