我想知道是否有更优雅的方式来使用 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()
NamedParameterJdbcTemplate