共计 1586 个字符,预计需要花费 4 分钟才能阅读完成。
ScalikeJDBC 是一个 Scala 的 JDBC 框架,官网说 easy-to-use and very flexible,易用又灵活~
1、添加依赖
<dependency>
<groupId>org.scalikejdbc</groupId>
<artifactId>scalikejdbc_2.11</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
2、上代码
import scalikejdbc._
object MySQLDAO {def main(args: Array[String]): Unit = {
// initialize JDBC driver & connection pool
Class.forName("org.h2.Driver")
ConnectionPool.singleton("jdbc:mysql:///film?characterEncoding=utf8", "root", "root")
val id = 1
val name = "复联 %"
val value = sql"""select * from movie where name LIKE $name ORDER BY id DESC"""
println(value)
// simple example
val lasts: List[Map[String, Any]] = DB.readOnly { implicit session =>
sql"""select * from movie where name LIKE $name ORDER BY id DESC""".map(_.toMap()).list.apply()}
println(lasts)
}
}
3、排错
1)版本
java.lang.NoSuchMethodError: scala.Product.$init$
这种方法找不到的问题通常都是 jar 包没引对或版本不一致,pom.xml
中配置的 scalikejdbc_2.11
必须和系统 sdk 的 scala 版本一致(也是 2.11.x)
2)MySQL 时区
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time
zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a
more specifc time zone value if you want to utilize time zone support.
这是因为 mysql-connector-java
的版本是8.0.15
解决方法:要么换成 5.1.x
的版本,或者在 cmd mysql 客户端输入 set global time_zone = '+8:00';
同样可以解决在 IDEA 的 DataSource 配置中连不上 MySQL 的时候。(08001 错误)
正文完