Anorm 得到 Int 作为结果

Anorm get Int as result

我有这样的代码:

def getUserId(email: String) = DB.withConnection { implicit con =>
  SQL("select userId from signUp where email = {email}").
    on('email -> email).as(SqlParser.str("access_token").singleOpt)
}

结果为String

如何得到 Int 的结果。

如果您查看 Anorm documentation,您可以了解如何使用行解析器。

对于 Int,使用 SqlParser.get[Int] 或其方便的别名 SqlParser.int

您正在寻找单列的行,.scalar 更好。

val res: Option[Int] = 
  SQL"SELECT userId FROM signUp WHERE email = $email".
    as(SqlParser.scalar[Int].singleOpt)

Note the Anorm interpolation SQL"..." (without the parenthesis).

我认为它应该有效

def getUserId(email: String) = { 
    val userId = DB.withConnection { 
       implicit a => SQL( """ select userId from signUp where email = {email} """).on('email -> email).as(SqlParser.str("access_token").singleOpt) 
    } 
    userId.toInt 
}