java - 如何在 Spring jdbcTemplate 中将 Array/List 设置为参数?

标签 java sql spring jdbc

我有很多动态构建的占位符“?”的 SQL 查询,我想用值数组替换占位符。数组的大小每次都可以不同。数组由所有参数按顺序组成。

return jdbcTemplate.query(Queries.someQuery,
    new Object[] {/* Array must be here */},
    new ResultSetExtractor<List<String>>() {
        @Override
        public List<String> extractData(ResultSet resultSet) 
        }
    });

sql生成示例:

for (int j = 0; j < y; j++) {
        conditionsBuilder.append("\n and p"+i+".object_id=o.object_id\n" +
                "    and p"+i+".attr_id =?\n" +
                "    and p"+i+".value =?\n");
        tablesBuilder.append(",patameters p"+i+" ");
        i++;
    }

最佳答案

使用ArrayList:

ArrayList<Object> values = new ArrayList<>;

在您的 for 循环中,您应该按照它们在查询中出现的顺序添加值:

values.add(value);

然后把它变成一个数组:

return jdbcTemplate.query(query, values.toArray(), resultSetExtractor);

关于java - 如何在 Spring jdbcTemplate 中将 Array/List 设置为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38825282/

相关文章:

java - HtmlUnit 获取页面错误

JAVA:[-255...255] int 到 2 字节数组

java - 如何在具有一对一关系的 Hibernate 中进行继承映射?

sql - 如何使用m2m条件查询数据

mysql - 在 MySQL 触发器中,如何获取有关发送请求的用户的信息?

sql - 从同一台服务器访问另一个数据库?

java - CAS - Pac4J - SSLHandshakeException

java - 从文件名创建搜索词

java - 将 Spring Batch 从 1.1.3 转换为 2.0.0

spring - 如何在 Spring Boot 中获取请求 URL