2014-10-26 65 views
12

ScalaDoc of the functions插圖和inSetBind之間的區別還沒有填寫。是什麼在油滑

我知道這些方法用於模仿SQL的IN關鍵字(例如,SELECT * FROM table WHERE id IN VALUES(1, 42, 101)可以用table.filter(_.id inSet Seq(1, 42, 101))完成)。我不知道這個「綁定」版本是什麼,或者如何選擇我應該使用的。

+0

的代碼可以在GitHub上。你看過嗎? – 2014-10-27 00:56:00

+11

@BobDalgleish華而不實的源代碼是非常敵視人類的生活。 – 2015-05-12 22:00:45

回答

14

inSetinSetBind的不安全版本,它根據傳入的輸入生成安全/轉義的sql值。在你手動設置值的例子中,這兩種類型的綁定同樣安全。

通常與綁定參數你得到的性能提升(通過產生準備好的語句),但與收藏價值的情況。有關詳細信息,請參閱here

+1

我不明白區別。你能解釋一下嗎?我嘗試用光滑的查詢。發現如果我使用inSet(List(1,2,3))將查詢構建爲where(1,2,3)中的id。如果我使用inSetBind(List(1,2,3)),查詢變成(?,?,?)中的id。 – 2015-01-09 13:03:51

+0

@YaduKrishnan後者佔位符語法上面提到,每一個?被替換爲安全/轉義值。 – virtualeyes 2015-01-14 07:12:13

+0

什麼ü通過「安全/逃脫」的價值觀是什麼意思?你能舉個例子嗎? – 2015-01-14 07:13:45