有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用Spring Jdbc从查询中获取List<Object[]>

我使用Spring Jdbc进行查询。我需要从数据库中执行select,但我不知道表中有多少列可以从resultset中获得结果(例如,对于RowMapper)。我想要List<Object[]>。可能吗?在不知道数据库中的列数的情况下,如何获取数据


共 (2) 个答案

  1. # 1 楼答案

    如果手头有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
    }
    
  2. # 2 楼答案

    如果你想要一份清单作为结果,你肯定应该质疑你的概念方法,你试图实现什么。 问问自己,你是否真的不能或不想提前知道你将收到哪些列,以及你将如何处理这些未知类型的列? 如果您有静态模型类,这些静态类型的字段可以整齐地映射到您的结果集,那么您的生活就会变得更轻松;如果这样做,甚至可以跳过jdbc alltoghter,让Spring数据处理所有查询和结果集映射

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