我想知道是否有更优雅的方法来使用Spring的JDBCTemplate进行IN()查询。目前,我正在执行以下操作:
StringBuilder jobTypeInClauseBuilder = new StringBuilder(); for(int i = 0; i < jobTypes.length; i++) { Type jobType = jobTypes[i]; if(i != 0) { jobTypeInClauseBuilder.append(','); } jobTypeInClauseBuilder.append(jobType.convert()); }
这是很痛苦的,因为如果我只有九行用于构建IN()查询的子句。我想要类似预准备语句的参数替换
你需要一个参数源:
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());
仅当getJdbcTemplate()返回类型的实例时,此方法才有效NamedParameterJdbcTemplate
getJdbcTemplate()