Как использовать один и тот же класс Java с разными SQL-запросами - PullRequest
0 голосов
/ 03 марта 2019

Я разрабатываю приложение для отчетов Java, которое может получать любой запрос SQL (для уже определенной базы данных), а затем отображаю результат в виде таблицы в приложении Vue.js.

У меня есть несколькоСомнения в том, как загрузить универсальный / гибридный класс Java, который может соответствовать разным запросам SQL.

Я имею в виду, возможно ли создать класс в Java, который может изменяться / изменяться во время выполнения, чтобы я мог отображать различные запросы SQLв нем?

Я знаю, что можно использовать java.sql.ResultSetMetaData, чтобы получить имя столбца, имя таблицы, имя класса столбца и т. д. (я не знаю, возможно ли это с помощью спящего режима)Но я не знаю, как отобразить результаты в уникальном классе.

Например:

У меня есть 3 разных запроса, и их может быть гораздо больше:

1) SELECT ID, COUNTRY_NAME FROM COUNTRY;

2) SELECT CODE, NAME, PRICE FROM PRODUCT;

3) SELECT P.CODE, P.NAME, S.NAME 
     FROM PRODUCT P
     JOIN SUPPLIER S
       ON S.ID = P.SUPPLIER_ID
     WHERE P.PRICE > 25;

Мне нужно отобразить результаты этого запроса (очевидно, по одному за раз) в универсальном классе, поэтому я передаю его приложению Vue для отображения в сетке.

Это способ сделать это?

1 Ответ

0 голосов
/ 03 марта 2019

Не изобретайте велосипед и не используйте то, что уже доступно и хорошо проверено.
То, что вы ищете, называется Spring JDBC, или, для еще более высокого уровня, Java Persistence API.

Использование Spring JDBC для извлечения набора записей может выглядеть как

final List<YourClass> results =
          jdbcTemplate.queryForList(
                   "Native SQL statement",
                   queryArguments,
                   YourClass.class
          );

При использовании реализации JPA (например, Hibernate, EclipseLink, ObjectDb) операция можетпохожи

final TypedQuery<YourClass> query = entityManager.createQuery("JPQL statement", YourClass.class);
final List<YourClass> results = query.getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...