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?
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? .
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