Существует ли стандартный способ отправки параметров динамического поиска для SQL-запроса со стороны клиента (форма HTML)?
Я хочу понять, как я могу писать динамические вызовы SQL, которые можно использовать для извлечения строк на основе критериев поиска конечного пользователя. Мне особенно интересно, как структурировать данные, отправляемые со стороны клиента на сервер. Я собираюсь ограничить этот вопрос поиском по одной таблице.
Обычно, когда я отправлял критерии поиска со стороны клиента, это были просто предопределенные данные. Например, получить элемент по идентификатору или получить элементы с отметкой времени, превышающей заданное время. Эти параметры могут быть легко добавлены в подготовленное заявление. Однако теперь мне нужно позволить пользователю выбрать, какие параметры поиска он когда-либо желает, для поиска в одной таблице. Существует множество способов поиска данных. Вот несколько примеров, которые я могу придумать:
- число, строка, дата и т. д. равны. Конкретные идентификаторы, регистрации и т. Д.
- число, дата строки и т. д. в диапазоне от х до у. Поиск людей в возрастной группе или бронирование на определенный период.
- номер, строка, дата в списках. Поиск людей, являющихся гражданами одной из стран НАТО.
Другими словами, для каждого параметра, который я отправляю, мне также необходимо отправить метаданные, к какому столбцу относятся параметры и как эти параметры следует использовать. До сих пор я отправлял фиксированный набор параметров поиска в виде пар ключ-значение, где серверная сторона знала бы, какой тип данных и какой тип проверки следует интерпретировать как. Теперь мне нужно отправить объекты, которые также содержат такую информацию, потому что пользователь может решить, для какого количества столбцов отправить параметры.
Поэтому для каждого запроса, кроме какой таблицы и каких столбцов для возврата, мне нужно знать следующее для каждого критерия запроса:
- Какой столбец проверить
- Какой тип проверки выполнять (например, между, больший, чем в списке и т. Д.)
- Вышеприведенное также должно соответствовать структуре данных параметра (equals имеет одно значение, значение /range должно иметь два значения, а list - 1-*)
- Тип данных параметра / столбца (?)
- Возможно, критерии сортировки.
Теперь я могу отправить это как чистый JSON и создать свою собственную сторону сервера интерпретатора, которая может генерировать либо SQL, JPQL, либо запрос критерия, используя ORM. Последний мой вероятный выбор. У меня, однако, есть ощущение, что должно быть стандартное решение для отправки данных динамического SQL-запроса, например, со стороны клиента на сторону сервера. Например, рассмотрим сайт знакомств, где пользователи могут искать возможных партнеров, основываясь на множестве возможных вариантов. Для этого существует так много приложений, я был бы удивлен, если бы не было стандартного решения для этого.