«SQL-блокнот» — web-приложение на Java + Spring Boot / MVC
В начале материала расскажу о возможностях программы, а в конце будет ссылка на репозиторий. Программа запускается везде, где есть JVM (Java Virtual Machine), имеет простой и понятный интерфейс.
Итак, какую программу будем собирать? Ту, которая умеет:
- Писать, хранить, редактировать SQL запросы;
- Создавать подключения к различным СУБД;
- Исполнять SQL запросы;
- Выгружать результаты отработки запросов в Excel, обходя его ограничение в 1 млн строк (выборка автоматически разбивается по excel листам);
- Разграничивать роли пользователей (пользователь/администратор);
- Также программа имеет собственный механизм регистрации/авторизации, логирования действий пользователей;
- Для примера я также приложил сервер СУБД Postgres, развернутый через Docker, чтобы описанная программа запускалась «из коробки».
Итак, стартовое окно авторизации/регистрации нового пользователя выглядит так:
Начальное окно с пунктами меню выглядит так:
С правами “ADMIN” можно увидеть список пользователей, редактировать их или удалить
Далее подробнее остановлюсь на каждом разделе меню и расскажу о его возможностях.
Пункт меню «Запрос». Здесь можно найти по наименованию «запрос» в списке запросов.
«Список запросов». Запросы, как я сказал ранее, можно редактировать. Возможно редактировать сам скрипт запроса, выгрузить его в Excel, найти в «Журнале» готовые выгрузки запроса. О «Журнале» расскажу далее.
Если в тексте SQL запроса присутствует макрос подстановки (@TMFL1), то в это место подставляется построчный текст, загруженный из txt-файла. Программа попросит загрузить файл:
«Журнал запросов». В Журнале хранятся исполненные запросы, и журнал также позволяет экспортировать готовый отчет Excel пользователю.
Возможен поиск готовых отчетов в журнале:
«Выгрузка пользователю». Когда отчет (файл Excel) сформирован в журнале появляется кнопка «Выгрузить».
Теперь перейдем к описанию некоторых частей кода программы.
Для работы c базами данных, системой доступа, REST API в pom.xml я использовал следующие зависимости.
Для работы с СУБД Oracle. Зависимости в pom.xml для СУБД Oracle.
Файл с настройками application.properties Для работы с СУБД Oracle
Легко перейти на любую другую БД изменив настройки и добавив соответствующе драйвера (зависимости в pom).
В БД создаем необходимые таблицы.
Таблица для списка отчетов:
Таблица для хранения SQL-запросов
Таблица для хранения журнала запросов.
Ниже приведу пример использования классов в приложении:
Для работы со списком отчетов – класс ReportsEntity:
Для работы с запросами – класс QueryEntity:
Сервис для выгрузки отчетов в Excel. Для выгрузки данных в Excel написан отдельный класс с учетом формирования файлов с большим объемом данных. Для ограничения расхода памяти, при очень больших объёмах данных использую разбивку выгрузки по 2000+- записей (строка ((SXSSFSheet) sheet).flushRows(2000);).
Логирование. Все логи собираются в log-файл (ежедневно в новый файл, название файла с датой). Файлы с логами хранятся на сервере в папке Logs.
Ввиду того что код программы объемен – я разместил его в bitbucket – ссылка.
В репозитории проект настроен на работу с БД PostgreSql, которая разворачивается через Docker
Буду рад, если моя программа будет полезна при решении ваших задач.
логи в гите, кто-то не умеет в gitignore.
мапинги в котнроллере через жопу - кто-то не умеет в REST
пароли в конфиг файлах (zz#~n3wf) - кто-то не умеет в секурити
бизнес логика в контроллерах - кто-то не умеет в Spring
исрпользование spring.jpa.hibernate.ddl-auto - кто-то не умеет в миграции
Комментарий недоступен
Просто студент хотел codereview получить на халяву
Взгляд со стороны...
Какой-то непрофессиональный сленг и оценочное суждение не совсем понятно для чего.
Здесь же совершенно различные статьи размещают разрабы и не только, ориентированные на абсолютно разные скилзы и компетенции программёров.
Коллеги, если вам показалась эта статья не столь интересной или не столь информативной, пожалуйста, не смотрите.
Только не понимаю, зачем давать свою оценку, да еще используя негатив и ненормативную лексику, лишь ради того, чтобы просто дать.
Или у вас какие-то свои мотивы и обиды на всех во всём мире?!
Комментарий недоступен
" я разместил его в GitHub" и ссылка на bitbucket =)
А как заполнить таблицы в БД записями по умолчанию? таблицы создаются пустые и похоже не очень из-за этого работает