Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Pertanyaan IN() dengan Cekap dengan Spring JDBCTtemplate?
Tingkatkan kecekapan pertanyaan IN() dalam Spring JDBCTtemplate
Apabila menggunakan JDBCTemplate Spring untuk pertanyaan IN(), proses membina klausa IN secara manual boleh menjadi membosankan. Untuk menyelesaikan masalah ini, mari kita terokai pendekatan yang lebih elegan dan cekap.
Spring menyediakan kelas NamedParameterJdbcTemplate, yang memudahkan pertanyaan IN() dengan membenarkan penggantian parameter. Daripada membina klausa IN secara manual, anda boleh menambahkan parameter pada MapSqlParameterSource dan menghantarnya ke jdbcTemplate sebagai parameter bernama.
Contohnya:
<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>
Nota: Kaedah ini memerlukan getJdbcTemplate()
untuk mengembalikan tika NamedParameterJdbcTemplate.
Menggunakan NamedParameterJdbcTemplate, anda boleh menulis semula kod seperti berikut:
<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>
Kod ini menghapuskan keperluan untuk membina klausa secara manual, menjadikan pertanyaan IN() Spring JDBCTemplate lebih cekap dan elegan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pertanyaan IN() dengan Cekap dengan Spring JDBCTtemplate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!