scala – anorm中的“In”子句?
发布时间:2020-12-16 09:45:28 所属栏目:安全 来源:网络整理
导读:在anorm中使用“in”子句似乎没有简单的方法: val ids = List("111","222","333")val users = SQL("select * from users where id in ({ids})").on('ids- ???).as(parser *) 如何取代???部分? 我试过了: on('ids - ids)on('ids - ids.mkString("'","','",
在anorm中使用“in”子句似乎没有简单的方法:
val ids = List("111","222","333") val users = SQL("select * from users where id in ({ids})").on('ids-> ???).as(parser *) 如何取代???部分? 我试过了: on('ids -> ids) on('ids -> ids.mkString("'","','","'")) on('ids -> ids.mkString("','") 但无效。 我在讨论中看到完全一样的问题:https://groups.google.com/d/topic/play-framework/qls6dhhdayc/discussion,作者有一个复杂的解决方案: val params = List(1,2,3) val paramsList = for ( i <- 0 until params.size ) yield ("userId" + i) // ---> results in List("userId0","userId1","userId2") User.find("id in ({%s})" // produces "id in ({userId0},{userId1},{userId2})" .format(paramsList.mkString("},{")) // produces Map("userId0" -> 1,"userId1" -> 2,...) .on(paramsList.zip(params)) .list() 这太复杂了。 有什么更容易的方法吗?还是应该玩提供一些东西来使它更容易? 解决方法
Anorm现在支持自2.3:
“Using multi-value parameter”以来的这种情况(和更多)
回到最初的例子: val ids = Seq("111","333") val users = SQL("select * from users where id in ({ids})").on('ids-> ids).as(parser *) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |