scala – 具有动态条件的Slick Plain SQL查询
发布时间:2020-12-16 08:56:33 所属栏目:安全 来源:网络整理
导读:我正在努力为我的查询添加其他条件.在最简单的形式,我需要的是如下所示: def findPeople(name: String,maybeSurname: Option[String]) = { val sql1 = sql"select * from my_table where name = $name" val sql2 = maybeSurname.map( surname = sql"and col
我正在努力为我的查询添加其他条件.在最简单的形式,我需要的是如下所示:
def findPeople(name: String,maybeSurname: Option[String]) = { val sql1 = sql"select * from my_table where name = $name" val sql2 = maybeSurname.map( surname => sql"and col2 = $surname" ).getOrElse(sql"") val finalSql = sql1 + sql2 // I need this kind of feature ... ... } 使用#$可能是一个选项,但是姓氏不会是绑定变量,这是一个大问题. 解决方法
这是一个关于光滑3.1.x的示例测试
import slick.jdbc.{SQLActionBuilder,SetParameter,PositionedParameters} object SlickKit { implicit class SQLActionBuilderConcat (a: SQLActionBuilder) { def concat (b: SQLActionBuilder): SQLActionBuilder = { SQLActionBuilder(a.queryParts ++ b.queryParts,new SetParameter[Unit] { def apply(p: Unit,pp: PositionedParameters): Unit = { a.unitPConv.apply(p,pp) b.unitPConv.apply(p,pp) } }) } } } 然后 import SlickKit._ val sql1 = sql""" select count(*) from idinfo_#$i """ val sql2 = sql""" where source=$source """ val sql = sql1 concat sql2 sql.as[Int].head (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |