如何从rxjava获取密钥在vert.x中插入查询 [英] how to get a key from rxjava insert query in vert.x
本文介绍了如何从rxjava获取密钥在vert.x中插入查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在vert.x项目中有一个用rxjava样式编写的insert方法.在我的方法中,我运行一个插入查询以将记录插入ms sql服务器中.我想获取新插入记录的自动递增键.我如何得到它?
I have an insert method in my vert.x project written in rxjava style. In my method I run an insert query to insert the record in ms sql server. I want to get the auto incremented key of newly inserted record. How I can get it?
这是我的代码.
@Override
public Single<Record> save(Record record) {
return new AsyncResultSingle<Record>(resultHandler -> {
jdbcClient.rxGetConnection()
.subscribe(connection -> {
String sql = "INSERT into record (ani, template_id) values (?, ?)";
JsonArray params = new JsonArray().add(record.ani).add(record.templateId);
connection.rxQueryWithParams(sql, params)
.doAfterTerminate(connection::close)
.subscribe(resultSet -> {
List<JsonObject> rows = resultSet.getRows();
//how I can get a key or Record object which has been inserted?
resultHandler.handle(Future.succeededFuture());
}, onError -> {
resultHandler.handle(Future.failedFuture(onError));
});
}, onError -> {
resultHandler.handle(Future.failedFuture(onError));
});
});
}
推荐答案
我认为,而不是
List<JsonObject> rows = resultSet.getRows();
您正在寻找
List<JsonArray> results = resultSet.getResults();
您已经弄清楚了,但是要在这里更正我的答案:您还必须使用 rxUpdateWithParams
而不是 rxQueryWithParams
.
you already figured it out, but to correct my answer here: you also have to use rxUpdateWithParams
instead of rxQueryWithParams
.
这篇关于如何从rxjava获取密钥在vert.x中插入查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文