Slick中的inSet和inSetBind有什么区别

Mik*_*ike 17 scala slick

函数ScalaDoc尚未填写.

我知道这些方法用于模仿SQL的IN关键字(例如,SELECT * FROM table WHERE id IN VALUES(1, 42, 101)可以完成table.filter(_.id inSet Seq(1, 42, 101))).我不知道这个"绑定"版本是什么或如何选择我应该使用的.

vir*_*yes 19

inSet是一个不安全的版本,inSetBind它根据传入的输入生成一个安全/转义的sql值.在您手动设置值的示例中,两种类型的绑定同样安全.

通常使用绑定参数可以提高性能(通过生成的预准备语句),但不会使用集合值.请参阅此处了解详情.

  • 我不明白其中的区别.你能解释一下吗?我试着用光滑的查询.发现如果我使用inSet(List(1,2,3)),那么查询的内置为(1,2,3)中的id.如果我使用inSetBind(List(1,2,3)),查询将成为(?,?,?)中的id. (2认同)