Spring JDBCTemplate での IN() クエリ効率の向上
Spring の JDBCTemplate を IN() クエリに使用する場合、IN 句を手動で構築するプロセスは面倒になる可能性があります。この問題を解決するために、より洗練された効率的なアプローチを検討してみましょう。
Spring は NamedParameterJdbcTemplate クラスを提供します。これはパラメータ置換を可能にすることで IN() クエリを簡素化します。 IN 句を手動で作成する代わりに、パラメータを MapSqlParameterSource に追加し、名前付きパラメータとして jdbcTemplate に渡すことができます。
例:
<code class="language-java">Set<Integer> ids = ...; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("ids", ids); List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)", parameters, getRowMapper());</code>
注: このメソッドでは、NamedParameterJdbcTemplate のインスタンスを返すために getJdbcTemplate()
が必要です。
NamedParameterJdbcTemplate を使用すると、コードを次のように書き換えることができます:
<code class="language-java">Set<Type> jobTypes = ...; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("jobTypes", jobTypes.stream().map(Type::convert).collect(Collectors.toList())); List<Job> jobs = getJdbcTemplate().query("SELECT * FROM job WHERE job_type IN (:jobTypes)", parameters, getRowMapper());</code>
このコードにより、句を手動で構築する必要がなくなり、Spring JDBCTemplate の IN() クエリがより効率的かつ洗練されたものになります。
以上がSpring JDBCTemplate で IN() クエリを効率的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。