如何理解play2的anorm结果解析器?

时间:2012-02-05 10:25:52

标签: playframework playframework-2.0 anorm

这是来自play2内置的zentasks的示例代码:

object Project {

  // -- Parsers

  /**
   * Parse a Project from a ResultSet
   */
  val simple = {
    get[Pk[Long]]("project.id") ~
    get[String]("project.folder") ~
    get[String]("project.name") map {
      case id~folder~name => Project(id, folder, name)
    }
  }
}

请注意字段键:project.idproject.folderproject.name

project部分是什么意思?它来自哪里?

查看查询方法:

  def findById(id: Long): Option[Project] = {
    DB.withConnection { implicit connection =>
      SQL("select * from project where id = {id}").on(
        'id -> id
      ).as(Project.simple.singleOpt)
    }
  }

SQL为select * from project ...,结果应为:

    id    |    folder    |   name

    project.id    |    project.folder    |    project.name

为什么我们应该将密钥指定为project.???,而不是直接指定field name

play2如何使用project.部分?

2 个答案:

答案 0 :(得分:0)

恕我直言,这只是数据库别名。

select id, folder, name from project

相同
select project.id, project.folder, project.name from project

甚至

select p.id, p.folder, p.name from project p

答案 1 :(得分:0)

根据here中提供的代码,Anorm Parser使用提供的字符串来检索给定列。

当它获得一些元数据时,它需要该字段的整个范围(表+名称)才能工作。