如何在不知道列的情况下将"io.vertx.mutiny.sqlclient.Rowset"投射到地图列表?



我是Quarkus的新手,我正在从表中获取记录,但查询是由第三方用户编写的,所以可能会发生我们不完全了解数据库的情况,在这种情况下,我们如何将Rowset转换为"地图列表"?或任何"Pojo类";或"JsonArray "?

import io.smallrye.mutiny.Uni;
import io.vertx.mutiny.pgclient.PgPool;
import io.vertx.mutiny.sqlclient.RowSet;
import io.vertx.mutiny.sqlclient.Tuple;
import io.vertx.sqlclient.Row;
public Uni<TableRQ> getTableRQ(int ids) {
try {
sql = "select * from "+vdnm+"ai_request_parameter where id in ($1)";
return client.preparedQuery(sql).execute(Tuple.of(ids))
.onItem().transform(pgRowSet -> {
JsonArray jsonArray = new JsonArray();
for (Row row : pgRowSet) {
// Here if I know columns than I know how to do it, but I don't know so How can we achieve it?
}
return jsonArray;
});
} catch (Exception e) {
return null;
}
}

您可能需要在转换到JsonObject/POJO之前转换一些数据,因此我提供了一些不同的解决方案,或多或少的控制。

方案一:RowSetto JsonArray (Small control)

JsonArray jsonArray = new JsonArray();
for (Row row : pgRowSet) {
JsonObject jsonObject = row.toJson();
jsonArray.add(jsonObject);
}
return jsonArray;

方案二:RowSetto JsonArray (Full control)

JsonArray jsonArray = new JsonArray();
for (Row row : pgRowSet) {
JsonObject jsonObject = new JsonObject();
for (int i = 0; i < row.size(); i++) {
String columnName = row.getColumnName(i);
Object columnValue = row.getValue(i);
jsonObject.put(columnName, columnValue);
}
jsonArray.add(jsonObject);
}
return jsonArray;

假设您想要将Row转换为POJO类(在本例中MyElement是POJO类)。

方案三:RowSetList(小控制)

List<MyElement> elementsList = new ArrayList<MyElement>();
for (Row row : pgRowSet) {
JsonObject jsonObject = row.toJson();
MyElement element = jsonObject.mapTo(MyElement.class);
elementsList.add(element);
}
return elementsList;

方案四:RowSetList(完全控制)

List<MyElement> elementsList = new ArrayList<MyElement>();
for (Row row : pgRowSet) {
JsonObject jsonObject = new JsonObject();
for (int i = 0; i < row.size(); i++) {
String columnName = row.getColumnName(i);
Object columnValue = row.getValue(i);
jsonObject.put(columnName, columnValue);
}
MyElement element = jsonObject.mapTo(MyElement.class);
elementsList.add(element);
}
return elementsList;

相关内容

  • 没有找到相关文章

最新更新