Scala播放JDBC插入地图

时间:2013-01-05 01:20:02

标签: scala playframework-2.0

在以下代码中......(取自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 }

我想目的是编写更简洁的代码?

2 个答案:

答案 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的文章,它是一个不错的语言家族