参数
绑定参数
.sq
文件使用与 MySQL 完全相同的语法,包括绑定参数。如果一个语句包含绑定参数,关联的方法将需要相应的参数。
类型推断
SQLDelight 会推断运行时参数的正确类型和可空性,包括自定义列类型。
sql
selectByNumber:
SELECT *
FROM hockeyPlayer
WHERE player_number = ?;
kotlin
val selectNumber10 = playerQueries.selectByNumber(player_number = 10)
println(selectNumber10.executeAsOne())
// Prints "Corey Perry"
具名参数
可以使用具名参数或索引参数。
sql
firstOrLastName:
SELECT *
FROM hockeyPlayer
WHERE full_name LIKE ('% ' || :name)
OR full_name LIKE (:name || ' %');
kotlin
playerQueries.firstOrLastName(name = "Ryan")
集合参数
也可以将值集合作为参数传递。
sql
selectByNames:
SELECT *
FROM hockeyPlayer
WHERE full_name IN ?;
kotlin
playerQueries.selectByNames(listOf("Alec", "Jake", "Matt"))
插入
INSERT VALUES
的参数可以绑定到表的 data class
。
sql
insertPlayer:
INSERT INTO hockeyPlayer
VALUES ?;
kotlin
val rickardRakell = HockeyPlayer(
full_name = "Rickard Rakell",
number = 67
)
playerQueries.insertPlayer(rickardRakell)
输入净化
SQLDelight 使用查询占位符 (query placeholders) 将参数传入查询。参数输入的实际净化工作由各个平台和变体的底层驱动实现完成。