ホームページ >Java >&#&チュートリアル >JDBC PreparedStatement を使用して IN 句を効率的に管理するにはどうすればよいですか?
JDBC の PreparedStatement を使用した IN 句の管理
IN 句を使用してクエリを実行する場合、値の設定が課題になることがあります。この記事では、事前に既知の値と未知の値の両方が含まれる可能性のある IN 句を効果的に処理する方法について説明します。
1 つのアプローチは、IN 句内の値の数に基づいてクエリ文字列を動的に生成することです。これには、各値のプレースホルダー (?) を使用して文字列を構築することが含まれます:
var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
または、StringBuilder を使用してプレースホルダーを追加し、クエリ文字列を構築することもできます:
List values = ... StringBuilder builder = new StringBuilder(); for( int i = 0 ; i < values.size(); i++ ) { builder.append("?,"); } String placeHolders = builder.deleteCharAt(builder.length() - 1).toString(); String stmt = "select * from test where field in (" + placeHolders + ")";
Onceプレースホルダー文字列が作成され、PreparedStatement にパラメーターを設定します反復:
int index = 1; for( Object o : values ) { pstmt.setObject(index++, o); }
これらの手法を使用すると、既知の値と可変数の値の両方を含む IN 句を効率的に処理でき、正確で最適化されたクエリの実行が保証されます。
以上がJDBC PreparedStatement を使用して IN 句を効率的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。