我如何通过 Vertx return 我的数据库值?
How can I return my database values through Vertx?
下午好,我试图从我的数据库中获取值并将它们添加到列表中,但我总是得到空值。原因是什么,它如何保存这些值?当涉及到通过控制台打印时,我没有问题。最好的问候。
public List<JsonObject> getAll() {
List<JsonObject> listObject = new ArrayList<JsonObject>();
try {
this.connect();
this.client.query("SELECT * FROM user")
.execute().onSuccess(ar -> {
for (Row row : ar) {
listObject.add(row.toJson());
System.out.println("---- OK " + listObject.stream().collect(Collectors.toList()));
}
}
);
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
}
System.out.println("--- Null: " + listObject.stream().collect(Collectors.toList()));
return listObject;
}
您不会使用 return
,因为这是一个异步调用。
相反,传递 Consumer
public void getAll(Consumer<ArrayList<JsonObject>> callback) {
try {
this.connect();
this.client.query("SELECT * FROM user").execute().onSuccess(ar -> {
List<JsonObject> listObject = new ArrayList<>();
for (Row row : ar) {
listObject.add(row.toJson());
}
System.out.printf("Fetched %d objects%n", listObject.size());
callback.accept(listObject); // this replaces your return statement
});
} catch (Exception e) {
System.out.println(e.getLocalizedMessage()); // TODO: replace with a proper logger
}
}
在其他地方,传入消费者实例
databaseClient.getAll(list -> {
// TODO: use the list to perform some action
})
否则,您可能需要查看 R2DBC 以及如何使用它来将订阅者连接到结果集。
下午好,我试图从我的数据库中获取值并将它们添加到列表中,但我总是得到空值。原因是什么,它如何保存这些值?当涉及到通过控制台打印时,我没有问题。最好的问候。
public List<JsonObject> getAll() {
List<JsonObject> listObject = new ArrayList<JsonObject>();
try {
this.connect();
this.client.query("SELECT * FROM user")
.execute().onSuccess(ar -> {
for (Row row : ar) {
listObject.add(row.toJson());
System.out.println("---- OK " + listObject.stream().collect(Collectors.toList()));
}
}
);
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
}
System.out.println("--- Null: " + listObject.stream().collect(Collectors.toList()));
return listObject;
}
您不会使用 return
,因为这是一个异步调用。
相反,传递 Consumer
public void getAll(Consumer<ArrayList<JsonObject>> callback) {
try {
this.connect();
this.client.query("SELECT * FROM user").execute().onSuccess(ar -> {
List<JsonObject> listObject = new ArrayList<>();
for (Row row : ar) {
listObject.add(row.toJson());
}
System.out.printf("Fetched %d objects%n", listObject.size());
callback.accept(listObject); // this replaces your return statement
});
} catch (Exception e) {
System.out.println(e.getLocalizedMessage()); // TODO: replace with a proper logger
}
}
在其他地方,传入消费者实例
databaseClient.getAll(list -> {
// TODO: use the list to perform some action
})
否则,您可能需要查看 R2DBC 以及如何使用它来将订阅者连接到结果集。