Как получить список из запроса с использованием Spring Jdbc - PullRequest
0 голосов
/ 27 мая 2020

Я использую Spring Jdb c для запросов. Мне нужно выполнить выбор из базы данных, но я не знаю, сколько столбцов в таблице, чтобы получить результат из набора результатов (например, для RowMapper). Я хотел бы получить List<Object[]>. Является ли это возможным? А как получить данные, не зная количества столбцов в базе данных?

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Если вы хотите получить список в качестве результата, вам определенно следует подвергнуть сомнению свой концептуальный подход к тому, чего вы пытаетесь достичь. Спросите себя, действительно ли вы действительно не можете или не хотите знать заранее, какие столбцы вы получите, и как вы будете обрабатывать неизвестные типы этих столбцов? Вы бы облегчили себе жизнь, если бы у вас были классы моделей stati c со статически типизированными полями, которые аккуратно отображаются на ваш набор результатов; и если вы сделаете это, вы даже можете пропустить jdb c alltoghter и позволить Spring Data работать со всеми запросами и сопоставлениями Resultset.

Но если это действительно не вариант для вас, то, по крайней мере, не сопоставьте свои строки результатов с массивом Object, а скорее с простым JSON объектом Map, если вас не заботит, какое значение принадлежит какому столбцу.

0 голосов
/ 27 мая 2020

Если у вас есть ResultSet, вы можете посмотреть результат, используя метаданные:

ResultSetMetaData metaData = resultSet.getMetaData();

Затем вы можете получить количество столбцов с помощью metaData.getColumnCount() и ткнуть в указанные c с помощью различных методов, например:

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
}
...