# 原生sql

虽然构造器的功能已经十分完善,但可能有一些特殊的方言,比如postgresql中的distinct on,oracle中的connect by在构造器中没有对应的api,这时候也可以使用sql""构建原生sql:

import easysql.dsl.*

val id = 1
val s = sql"select * from user where id = $id"

这看起来就像是原生的字符串模板一样,如果熟悉scala的字符串模板,想必不会对这种方式感到陌生。

字符串等类型的变量代入其中的时候可以自动生成单引号:

import easysql.dsl.*

val name = "x"
val s = sql"select * from user where name = $name"

也可以把List代入其中:

import easysql.dsl.*

val idList = List(1, 2, 3)
val s = sql"select * from user where id in $idList"

可见,就算是使用原生sql,我们也不用编写生成表达式的样板代码。