问题
How do you use Anorm outside of play in Scala? In the Anorm document for play, it simply uses something like:
DB.withConnection { implicit c =>
val result: Boolean = SQL("Select 1").execute()
}
The DB
object is only for Play. How do you use Anorm alone without using Play?
回答1:
There is no need of DB
object (part of Play JDBC not Anorm). Anorm works as along as you provide it connection as implicit:
implicit val con: java.sql.Connection = ??? // whatever you want to resolve connection
SQL"SELECT * FROM Table".as(...)
You can resolve JDBC connection in many way: basic DriverManager.getConnection
, JNDI, ...
As for dependency, it's easy to add it in SBT: How to declare dependency on Play's Anorm for a standalone application? .
回答2:
You could also emulate the DB object as follows (i haven't tried this though)
object DB {
def withConnection[A](block: Connection => A): A = {
val connection: Connection = ConnectionPool.borrow()
try {
block(connection)
} finally {
connection.close()
}
}
}
Taken from https://github.com/TimothyKlim/anorm-without-play/blob/master/src/main/scala/Main.scala
来源:https://stackoverflow.com/questions/25582744/how-to-use-anorm-outside-of-play