java - 如何在使用reactive-postgresql-client时将不确定的参数传递给preparedQuery?

标签 java postgresql vert.x

有人知道如何将不确定的参数传递给client.preparedQuery吗?请看下图,感谢您的帮助!

@Override
public Future<List<User>> getByIds(List<String> ids) {
    Promise<List<User>> promise = Promise.promise();
    // How to pass the uncertain parameters to preparedQuery?
    pool.preparedQuery("SELECT * FROM users WHERE id IN ($1)", Tuple.wrap(ids.toArray()), ar -> {
        if (ar.succeeded()) {
            RowSet<Row> rows = ar.result();
            List<User> users = new ArrayList<>();
            for (Row row : rows) {
                User user = User.fromDatabaseRow(row);
                users.add(user);
            }
            promise.complete(users);
        } else {
            promise.fail(ar.cause());
        }
    });
    return promise.future();
}

enter image description here

最佳答案

要将数组传递给 PostgreSQL,您必须使用 = ANY(params) 而不是 IN(params)

SELECT * FROM users WHERE id = ANY($1)

此外,您必须将字符串数组传递给 ANY,您的代码应该是:

pool.preparedQuery(
        "SELECT * FROM users WHERE id = ANY($1)", 
        Tuple.of(ids.toArray(String[]::new)), 
        ar -> {..}
)

关于java - 如何在使用reactive-postgresql-client时将不确定的参数传递给preparedQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60224938/

相关文章:

java - 在 java 应用程序中嵌入 Apache stanbol(Maven)

java - 使用 JUnit 对 akka actor 进行单元测试

postgresql - RoR/Postgres 查询所有父对象的第一个或最后一个子对象

mysql - 如何在不了解列的情况下做数据透视表

java - 使用Java和vert.x在POST请求中获取图像

java - 用于非阻塞IO调用的aspectj计时器

java - Vert.x - 从 POST 请求获取参数

java - 从 json 响应创建 java 模型

Java Jersey - 在同一个@path 上使用不同参数的相同方法?

r - Postgres ARRAY 列类型到 R 中的表列表列,反之亦然