プリペアドステートメントの単一のパラメータにリストをバインドすることはできません。
リスト内の各要素のパラメーターマーカーを使用してSQLを生成します。例:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
クエリごとに新しいステートメントを生成しますが、PreparedStatement
を使用することをお勧めします。 。リストにString
が含まれている場合 インスタンスでは、SQLインジェクションから保護するために必要なエスケープを取得します。
ただし、Integer
のような安全な型であっても オブジェクト、一部のドライバー、またはミドルウェアは、PreparedStatements
をキャッシュできます 、同じフォームが要求された場合は、キャッシュされたインスタンスを返します。もちろん、いくつかのテストが必要になります。リストのサイズが大きく異なる場合は、さまざまなステートメントがあり、実装が不十分なキャッシュでは、それほど多くを処理する準備ができていない可能性があります。