Я использую vertx-mysql-postgresql-client-3.3.0 и vertx-sql-common-3.3.0 Первоначально я думал об использовании пакетной операции для вставки несколько операторов, но выглядит так (http://vertx.io/docs/vertx-sql-common/java/#_batch_operations) не реализовано в файле vertx-mysql-postgres-client.Выполнять несколько запросов Sql асинхронно в Vertx (Vert.x 3)
код, который обрабатывает почтовые данные в БД:
SQLConnection sqlConnection;
List <JsonArray> targetParams = new ArrayList();
for (String key : targetObject.getTargets().keySet()) {
targetParams.add(new JsonArray().add(key).add(targetObject.getTargets().get(key)).add(targetObject.getId()));
}
int[] i = {targetObject.getTargets().size()};
while(i[0]>=0) {
sqlConnection.updateWithParams("INSERT INTO Targets (name, id,language) VALUES (?,?,?)", taglineParams.get(i[0] - 1), result ->
{
if (result.succeeded()) {
i[0]--;
}
else { badRequest(context, "Error inserting error code: " + result.cause().toString());
}
});
}
AsyncResult код обработчика:
Handler<AsyncResult<SQLConnection>> sqlConnectionHandler = new Handler<AsyncResult<SQLConnection>>() {
@Override
public void handle(AsyncResult<SQLConnection> res) {
if (res.succeeded()) {
sqlConnection = res.result();
} else {
logger.error("Unable to create SQL connection: " + res.cause().toString());
}
}
};
Это один не работает и дает Thread заблокированное ошибку после вставки первого.
Любая идея, как я могу работать с несколькими вставками?
Использование для цикла также я получаю тот же самый поток, который уже работает. Будет ли запрос, такой как «INSERT INTO Targets» (имя, идентификатор, язык), VALUES (?,?,?), (?,?,?); », TaglineParams, result ->' work? – dreamhigh