Play中db的许多列上的模式匹配

时间:2013-12-25 10:11:35

标签: sql scala playframework pattern-matching anorm

我在Play 2.2应用程序中对数据库进行了以下sql查询:

SQL("SELECT t.id, t.field1, t.field2 from table1 t WHERE t.field1 = {param1}")
   .on("param1" -> param1)()
   .map {
       case ???
    }.toList

此请求可以返回:

  1. 没有记录
  2. 记录但field2NULL
  3. field2NOT NULL
  4. 的记录

    我该如何处理这些案件?我只知道如何处理单个列:

    //...
    .map {
      case Row(field1: Option[String]) => field1
     }.toList
    

1 个答案:

答案 0 :(得分:1)

使用行解析器,在此处记录:

http://www.playframework.com/documentation/2.2.x/ScalaAnorm

例如:

val results: List[(Int, Int, String)] = 
  SQL("SELECT t.id, t.field1, t.field2 from table1 t WHERE t.field1 = {param1}")
    .on("param1" -> param1)()
    .as(int("t.id") ~ int("t.field1") ~ get[Option[String]]("t.field2") map(flatten) *)
    .toList