当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Jdbc从查询中获取List<Object〔〕

王刚毅
2023-03-14

我使用Spring Jdbc进行查询。我需要从数据库中执行select,但是我不知道表中有多少列可以从resultset中获得结果(例如,对于< code>RowMapper)。我想获得<代码>列表

共有2个答案

柴茂材
2023-03-14

如果你想要一个List作为结果,你绝对应该质疑你的概念方法来实现你想要实现的目标。问问你自己,你是否真的不能或不想提前知道你会收到什么colum,以及你将如何处理这些列的未知类型?如果你有静态模型类,其中包含静态类型的字段,可以整齐地映射到你的结果集,你的生活会变得更轻松;如果你这样做了,你甚至可以跳过jdbc alltoghter,让Spring Data所有的查询和Resultset映射工作。

但是,如果这真的不是一个选项,那么至少不要将结果行映射到对象数组,而是映射到简单的JSON对象或Map,除非您不太关心什么值属于哪个列。

莫承运
2023-03-14

如果您手头有 ResultSet,则可以使用元数据查看结果:

ResultSetMetaData metaData = resultSet.getMetaData();

然后您可以使用metaData.getColumnCount()获取列计数,并使用如下各种方法戳特定的列:

int count = metaData.getColumnCount();
for (int i = 1; i <= count; i++) { // yeah, sql indexes from 1
    System.out.println(metaData.getColumnName(i));
    System.out.println(metaData.isNullable(i));
    //... see ResultSetMetadata JavaDoc for the rest
}
 类似资料:
  • 我正在使用重新保证的框架,在它里面,它有JsonPath类。JsonPath有一个getList的方法签名(String path,Class T); 我试图做这样的事情: 我得到了一个运行时强制转换异常。那么,调用它的正确格式是什么呢。我还试图: 这也失败了。实际上编译失败了。

  • 问题内容: 我想知道什么是从hibernate查询中获取地图数组的最佳方法。Google表示要迭代query.list(),然后将对象创建/放入空地图数组。 我想会有一些优雅而有效的方法来做到这一点。有人可以给我个主意吗? 问题答案: 参见Hibernate文档-15.6。select子句: 您可以使用以下方式为选定的表达式分配别名: 与选择新地图一起使用时,这非常有用: 该查询返回一个从别名到所

  • 我有问题,需要帮助。 问题是我正在尝试使用 jdbctemplate 和映射获取查询的结果,该结果导致我的 File 类。 我的类文件包含3O个属性:10个长、字符串和日期类型的属性。 我正在执行的查询: 当执行查询时,它不会给我一个错误,一切都是正确的,但是当显示结果时,列出来为空,错误是由于我使用的查询使用别名,别名与File类的属性名称不匹配。 这就是我的问题或查询,因为我不能更改类属性的名

  • 我在实时数据库中有以下数据: 实时数据库 我想获得 当我用这个的时候 错误: E/flutter(27654):[ERROR: flutter/lib/ui/ui_dart_state.cc(166)]未处理的异常:类型_InternalLinkedHashMap 我的范例: 我的问卷模型:

  • 我有一个应该接收< code >列表的服务 所以我的问题是,我如何发送和接收这些值。 JAX-RS规范说: 支持以下类型: 1原始类型 2具有接受单个String参数的构造函数的类型。 3个类型具有名为valueOf的静态方法,该方法带有单个字符串参数。 4列表、集合或排序集,其中T满足以上2或3。 但是即使有构造函数,我也不能得到值。

  • 问题内容: 我有一个项目,我需要一个查询以使用表名来获取所有列的所有属性(列名,位置,数据类型,非空值和注释)。 我实现了获取列名,位置数据类型和不为空?与此查询: 但是,我需要评论! 问题答案: 这是针对系统目录的查询,该系统目录应获取您需要的所有内容(免费提供额外的主键字段)。 这将返回如下结果: num:列号 name:列名 typ:数据类型 notnull:列是否定义为 注释:为该列定义的