Nie możesz powiązać listy z pojedynczym parametrem w przygotowanej instrukcji.
Generuj SQL ze znacznikiem parametru dla każdego elementu na liście, na przykład:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
Nawet jeśli wygenerujesz nowe oświadczenie dla każdego zapytania, nadal polecam użycie PreparedStatement
. Jeśli Twoja lista zawiera String
wystąpień, uzyskasz niezbędną escaping w celu ochrony przed wstrzyknięciem SQL.
Ale nawet jeśli jest to bezpieczny typ, taki jak Integer
obiekty, niektóre sterowniki lub oprogramowanie pośredniczące mogą buforować PreparedStatements
i zwróć buforowane wystąpienie, jeśli zażądano tego samego formularza. Oczywiście konieczne byłyby pewne testy. Jeśli twoje listy różnią się znacznie rozmiarem, będziesz mieć wiele różnych instrukcji, a źle zaimplementowana pamięć podręczna może nie być przygotowana do obsługi tak wielu.