# 入门
我们需要先引入依赖:
libraryDependencies += "io.github.wz7982" % "core_3" % "2.1.1"
如果需要使用内置的jdbc交互功能,使用下面的依赖即可:
libraryDependencies += "io.github.wz7982" % "jdbc_3" % "2.1.1"
在常见的使用场景中,我们需要对数据预先建模,此处使用case class
管理,并添加注解,比如我们创建一个“用户”实体类,对应数据库的“用户”表,添加两个字段,其中“id”字段是主键:
import easysql.dsl.*
case class User(@PrimaryKey id: Int, name: Option[String])
然后使用asTable
方法生成一个表代理对象:
import easysql.dsl.*
val user = asTable[User]
这样,我们就可以用来构建查询了:
import easysql.dsl.*
// 查询
val q = select (user.*) from user where user.id === 1
// 按主键查询
val f = selectByPk[User](1)
val userRow = User(1, Some("x"))
// 插入
val i = insert(userRow)
// 按主键更新其他字段
val u = update(userRow)
// 按主键插入或更新
val s = save(userRow)
// 按主键删除
val d = delete[User](1)
上面的代码构建出了查询dsl,如果我们需要生成sql字符串的话,我们需要使用.sql
方法,并传入数据库类型:
import easysql.dsl.*
import easysql.database.*
val sql: String = q.sql(DB.MYSQL)
到现在为止,还没有与数据库交互,如果需要使用easysql提供的jdbc实现,我们需要配置一下数据库的连接,首先我们需要一个实现了java中DataSource
的连接池,你可以选择喜欢的连接池,比如Hikari、Druid、C3P0等:
// 此处省略连接池配置
val dataSource: DataSource = ???
然后我们需要配置日志管理,任意String => Unit
都可以作为日志的接收器,此处我们使用given
来创建(以java内置的Logger,以及println为例):
import easysql.database.*
// java自带Logger
val logger = java.util.logging.Logger.getLogger("")
given Logger = logger.info
// println
given Logger = println
如果你不想打印查询日志,将Logger
指向一个空函数即可:
import easysql.database.*
given Logger = _ => ()
然后可以创建一个JdbcConnection:
import easysql.database.*
val db: JdbcConnection = new JdbcConnection(DB.MYSQL, dataSource)
现在,我们就可以使用这个数据库连接来跟数据库交互了:
val q = select (user) from user where user.id > 1
val data1: List[Option[User]] = db.query(q)
val data2: List[User] = db.querySkipNoneRows(q)
val data3: Option[Option[User]] = db.find(q)
上面的例子中,我们分别对同一个查询执行了查询全部记录和查询首条记录,执行后的类型是根据select的参数列表自动推断的,此处显式写出只是为了演示,实际使用并不需要手动指明。
- 详细的使用方法,请阅读后续文档。
- 目前IDEA对Scala3的支持有限,无法正确显示出推断的类型,现阶段更推荐VSCode添加Metalse插件使用。