小编典典

如何有效地使用 Spring 的 JDBCTemplate 执行 IN() SQL 查询?

all

我想知道是否有更优雅的方式来使用 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() 查询的子句。我想要类似准备好的语句的参数替换


阅读 60

收藏
2022-07-27

共1个答案

小编典典

你想要一个参数源:

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

2022-07-27