在使用SELECT查詢時IN比OR的效率好。那么在Spring中如何使用IN()呢?
這是我原來的使用方式,用字符串拼接:
StringBuilder buf = new StringBuilder("SELECT name FROM pos_user WHERE id IN (");
// ids 是List<Integer>類型
for(int i = 0; i < ids.size(); i++) {
if (i > 0) buf.append(",");
buf.apend(ids.get(i));
}
buf.append(")");
List<String> list = jdbcTemplate.queryForList(buf.toString(), String.class);
實際上Spring JDBC提供了一種更優雅的方法:
NamedParameterJdbcTemplate namedParameterJdbcTemplate =
new NamedParameterJdbcTemplate(jdbcTemplate);
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", ids);
List<String> list =
namedParameterJdbcTemplate.query("SELECT name FROM pos_user WHERE id in (:ids)",
parameters, String.class);
