簡単に言うと、汎用のVertx JDBCクライアントではクエリパラメータとしてリストを追加することはできませんが、Postgresを使用しているため、使用できるvertx-pg-clientというPostgres固有のライブラリがあります。このコードで行ったのとほぼ同じクエリを実装しました:
List<String> currencies = whatever();
String uri = "your-uri";
String query = "select from table where currency = any($1)";
PgConnection.connect(vertx, uri, connectionResult -> {
if (connectionResult.failed()) {
// handle
} else {
PgConnection connection = connectionResult.result();
Tuple params = Tuple.of(currencies);
doQuery(query, connection, params).setHandler(queryResult -> {
connection.close();
msg.reply(queryResult.result());
});
}
});
private Future<String> doQuery(String sql, PgConnection connection, Tuple params) {
Promise<String> promise = Promise.promise();
connection.preparedQuery(sql, params, res -> {
if (res.failed()) {
// log
promise.fail(res.cause());
} else {
RowSet<Row> rowSet = res.result();
// do something with the rows and construct a return object (here, a string)
String result = something;
promise.complete(result);
}
});
return promise.future();
}
すべてのクレジットは、同じ質問で私を助けてくれた@tsegismontに送られますここ 。