【问题标题】:Pattern matching on many columns from db in PlayPlay 中 db 中多列的模式匹配
【发布时间】:2013-12-25 10:11:35
【问题描述】:

我对 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

我该如何处理这些情况?我只知道如何处理单列:

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

【问题讨论】:

    标签: sql scala playframework pattern-matching anorm


    【解决方案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 
    

    【讨论】:

    • 一个问题:没有记录的情况下如何处理?
    • 你应该得到一个空列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2011-02-12
    • 2018-01-28
    相关资源
    最近更新 更多