scala/playframework
Using ScalikeJDBC
wefree
2023. 2. 19. 20:30
http://scalikejdbc.org/documentation/playframework-support.html
https://github.com/scalikejdbc/scalikejdbc-play-support
build.sbt
libraryDependencies ++= Seq(
jdbc,
guice,
"mysql" % "mysql-connector-java" % "8.0.32",
"org.scalikejdbc" %% "scalikejdbc" % "3.5.0",
"org.scalikejdbc" %% "scalikejdbc-config" % "3.5.0",
"org.scalikejdbc" %% "scalikejdbc-play-initializer" % "2.8.0-scalikejdbc-3.5",
"org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test
)
dependency 충돌로 scalikejdbc "4.0.0" 대신에 "3.5.0" 사용
conf/application.conf
play.modules {
enabled += "scalikejdbc.PlayModule"
disabled += "play.api.db.DBModule"
}
db {
# You can turn on SQL logging for any datasource
# https://www.playframework.com/documentation/latest/Highlights25#Logging-SQL-statements
#default.logSql=true
default.driver=com.mysql.jdbc.Driver
default.url="jdbc:mysql://localhost:3306"
default.username=root
default.password=xxxxxx
default.poolInitialSize=10
default.poolMaxSize=10
# default.poolValidationQuery=
}
scalikejdbc {
global.loggingSQLAndTime.enabled=true
global.loggingSQLAndTime.singleLineMode=false
global.loggingSQLAndTime.logLevel=debug
global.loggingSQLAndTime.warningEnabled=true
global.loggingSQLAndTime.warningThresholdMillis=5
global.loggingSQLAndTime.warningLogLevel=warn
}
Play Code
import play.api.Logging
import play.api.mvc._
import scalikejdbc.{AutoSession, DB, DBSession, scalikejdbcSQLInterpolationImplicitDef}
import javax.inject._
import scala.concurrent.{ExecutionContext, Future}
@Singleton
class ApiController @Inject() (cc: ControllerComponents)(
implicit ec: ExecutionContext
) extends AbstractController(cc) {
implicit val session: DBSession = AutoSession
def api: Action[AnyContent] = Action { request =>
val entities: List[String] =
DB.readOnly(implicit session => sql"select * from ndiff.evaluation limit 10").map(rs => rs.get[String]("answer")).list().apply()
entities.foreach(println)
Ok(s"allowed user")
}
}