我有一个写的查询正在使用光滑,这不是一个普通的光滑查询。
该查询是一个选择查询,它从称为Employee的表中获取记录。结果是Employee类的类型。

现在有一个字符串列表

val nameFilter= List("Sachin","Naveen"")

并且此“nameFilter”是动态产生的,它可以具有任意数量的名称
var result= dbHandle.db.run((query.drop(10).take(10)).result

变量query只是对Employee表的选择查询,该表选择从11到20的记录范围。

现在,我需要过滤具有“nameFilter”中提到的名称的记录,然后从11到20中选择记录。这意味着我需要一个带有“IN”子句的查询。

请注意,这不是普通的Slick SQL查询,我必须以上述格式构建查询。

最佳答案

您可以使用.inSet方法执行此操作(请参阅here):



因此,这将对您的代码意味着:

val nameFilter= List("Sachin","Naveen")
val filteredQuery = query.filter(_.name.inSet(nameFilter))
var result= dbHandle.db.run((filteredQuery.drop(10).take(10)).result

根据输入的来源,您应该考虑使用 .inSetBind 来转义输入(请参阅this SO post)。

10-05 18:59