Я пытаюсь найти хорошее решение для системы фильтрации фильмов, встроенной в Java, и базы данных mysql.Предполагается, что пользователь сможет фильтровать фильмы, которые он хочет просмотреть, по ряду атрибутов, таких как: режиссер, актер, продолжительность, жанр, год, ...,.Всего есть 11 полей, которые можно использовать для фильтрации запроса.
Проблема в том, что некоторые из этих полей могут (и, вероятно, будут) оставаться пустыми.Например, возможно, пользователь хочет фильтровать данные только на основе определенного жанра, режиссера и длины.Или, может быть, они хотят фильтровать его только на основе продакшн-студии и не заботятся о других параметрах фильтра.
Я установил соединение с сервером, и проблема заключается в создании «SQL_String», которую я буду использовать в statement.executeQuery(SQL_String)
.
Допустим, я хотел отфильтровать только одно поле.Тогда я знаю, что могу написать
String field = //user input (for example: actor)
String filter = //user input (for example: 'tom cruise')
String SQL_String = "SELECT * FROM Movies WHERE "+field + "=" +filter
Но если я хочу разрешить пользователю фильтровать по нескольким (или нулевым) полям, то я не знаю, как написать код.
Некоторые примеры запросов могут быть:
"SELECT * FROM Movies WHERE (director = 'steven spielberg' AND genre = 'action' AND length >100)"
"SELECT * FROM Movies WHERE (type = 'tv-series' AND actor = 'bob odenkirk')"
Таким образом, пользователь может указать, какие поля они хотят фильтровать (если они есть), и мне нужно придумать код Java, который может принимать тево внимание и построить строку запроса.