我需要vertx mysql客户端v4.1.0 java api的帮助。我已经使用了下面的两个代码,但我得到不一致的结果与数字2,因为它返回null,即使有一个数据库记录。这不是阻塞电话吗?
/* 1. asynchronous */
mysql.query(sql).execute(asr -> {
if (asr.succeeded()) {
RowSet<Row> rowset = asr.result();
}else{
//Log and handle error
}
});
/* 2. ??? synchronous */
RowSet<Row> rowset = mysql.query(sql).execute().result();
.reactivex
和rawVert。xMySQL客户端库变体是异步的,通过设计提供Handler
基类型作为处理SQL查询结果的方式:
io.vertx.sqlclient.Query #执行(Handler
处理程序)执行查询
绿色。x仍然为常见模式提供API可移植性,例如Java的Future
和下面的方法签名:
io.vertx.sqlclient.Query # execute ()类似于execute(Handler),但返回异步结果的Future
响应式客户端库端口提供了一个修正的方法以及作为发布者返回查询结果Single
:
io.vertx.reactivex.sqlclient.Query # rxExecute ()执行查询
考虑到以上考虑,当调用:
时RowSet<Row> rowset = mysql.query(sql).execute().result();
你正在执行SQL查询,然后阻塞当前线程,直到查询结果返回并且Future
被解析。