在以下代码中......(取自Scala Play Tutorial)
object Task {
val task = {
get[Long]("id") ~
get[String]("label") map {
case id~label => Task(id, label)
}
}
...
def create(label:String) {
DB.withConnection { implicit c =>
SQL("insert into task (label) values ({label})").on(
'label -> label
).executeUpdate()
}
}
'label -> label
是否意味着插入map { id : label }
?
我想目的是编写更简洁的代码?
答案 0 :(得分:0)
"insert into task (label) values ({label})"
是一个模板,on
正在使用类型为Symbol -> String
的params的地图呈现该模板,并且可能还有sql在呈现它们时转义params。符号基本上只是一个类似字符串的类型,它被优化为地图中的键。
答案 1 :(得分:0)
'label -> label
表示label:String
而非"{label}"
,因为SQL语法为insert into table (field1, field2, ...) values (value1, value2, ...)
。请阅读一些关于SQL的文章,它是一个不错的语言家族