一般来说,你是对的。
您可以自己在引擎盖下看到:
Method queryWithParams()
calls execute()
:
public SQLConnection queryWithParams(String sql, JsonArray params, Handler<AsyncResult<ResultSet>> resultHandler) {
new JDBCQuery(vertx, helper, options, ctx, sql, params).execute(conn, statementsQueue, resultHandler);
return this;
}
And execute() https://github.com/vert-x3/vertx-jdbc-client/blob/master/src/main/java/io/vertx/ext/jdbc/impl/actions/AbstractJDBCAction.java#L66看起来像这样:
public void execute(Connection conn, TaskQueue statementsQueue, Handler<AsyncResult<T>> resultHandler) {
ctx.executeBlocking(future -> handle(conn, future), statementsQueue, resultHandler);
}
您可能想知道在哪里ctx
来自。在里面JDBCClientImpl https://github.com/vert-x3/vertx-jdbc-client/blob/master/src/main/java/io/vertx/ext/jdbc/impl/JDBCClientImpl.java#L215:
public SQLClient getConnection(Handler<AsyncResult<SQLConnection>> handler) {
Context ctx = vertx.getOrCreateContext();
getConnection(ctx, ar -> ctx.runOnContext(v -> handler.handle(ar)));
return this;
}
你的查询是由普通的旧执行的ExecutorService https://github.com/vert-x3/vertx-jdbc-client/blob/master/src/main/java/io/vertx/ext/jdbc/impl/JDBCClientImpl.java#L65