Playframework 如何理解play2的anorm的结果解析器?
这是play2内置的zentasks中的示例代码:Playframework 如何理解play2的anorm的结果解析器?,playframework,playframework-2.0,anorm,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~
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.id、project.folder、project.name
项目部分是什么意思?它是从哪里来的
请看查询方法:
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
不是:
为什么我们应该将键指定为项目,而不是直接指定字段名
play2如何使用该项目。部分 IMHO它只是一个DB别名
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
我知道这只是DB别名
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
根据中提供的代码,Anorm解析器使用提供的字符串检索给定列
当它获得一些元数据时,需要字段表+名称的完整范围才能工作。根据中的可用代码,Anorm解析器使用提供的字符串检索给定列
当它获得一些元数据时,它需要字段表+名称的完整范围才能工作。对不起,它们不是DB别名。这取决于jdbc驱动程序的rs.getMetaData.getTableNamecol方法。抱歉,它们不是DB别名。它取决于jdbc驱动程序的rs.getMetaData.getTableNamecol方法。