Du kan ikke binde en liste til en enkelt parameter i en forberedt sætning.
Generer SQL med en parametermarkør for hvert element på listen, for eksempel:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
Selvom du vil generere en ny erklæring for hver forespørgsel, vil jeg stadig anbefale at bruge en PreparedStatement . Hvis din liste indeholder String tilfælde, får du den nødvendige escape for at beskytte mod SQL-injektion.
Men selvom det er en sikker type, f.eks. Integer objekter, nogle drivere eller middleware kan cache PreparedStatements , og returner en cachelagret forekomst, hvis den samme formular anmodes om. Selvfølgelig ville nogle tests være nødvendige. Hvis dine lister varierer meget i størrelse, vil du have mange forskellige udsagn, og en dårligt implementeret cache er måske ikke forberedt til at håndtere så mange.