select * from students where ”
Сформируйте часть WHERE этого запроса, используя StringBuilder. Пример данных для фильтрации приведены ниже в виде json-строки. Если значение null, то параметр не должен попадать в запрос.
Пример:
{“name”: “Ivanov”, “country”: “Russia”, “city”: “Moscow”, “age”: “null”}
Напишите свой код в методе answer класса Answer. Метод answer принимает на вход два параметра:
String QUERY – начало SQL-запроса
String PARAMS – JSON с параметрами
java
public class Answer {
public String answer(String QUERY, String PARAMS) {
StringBuilder whereBuilder = new StringBuilder();
// JSON парсинг и получение параметров
String name = getStringParam(PARAMS, "name");
String country = getStringParam(PARAMS, "country");
String city = getStringParam(PARAMS, "city");
Integer age = getIntParam(PARAMS, "age");
// Добавление условий в часть WHERE запроса
if (name != null) {
whereBuilder.append("name = '").append(name).append("' AND ");
}
if (country != null) {
whereBuilder.append("country = '").append(country).append("' AND ");
}
if (city != null) {
whereBuilder.append("city = '").append(city).append("' AND ");
}
if (age != null) {
whereBuilder.append("age = ").append(age).append(" AND ");
}
// Удаление последнего "AND"
int lastIndex = whereBuilder.lastIndexOf("AND");
if (lastIndex != -1) {
whereBuilder.delete(lastIndex, lastIndex + 3);
}
// Получение итогового запроса
String queryWithWhere = QUERY + " WHERE " + whereBuilder.toString();
return queryWithWhere;
}
// Метод для получения значения параметра типа String из JSON-строки
private String getStringParam(String params, String paramName) {
JSONObject jsonObject = new JSONObject(params);
if (jsonObject.isNull(paramName)) {
return null;
} else {
return jsonObject.getString(paramName);
}
}
// Метод для получения значения параметра типа Integer из JSON-строки
private Integer getIntParam(String params, String paramName) {
JSONObject jsonObject = new JSONObject(params);
if (jsonObject.isNull(paramName)) {
return null;
} else {
return jsonObject.getInt(paramName);
}
}
}
Данный код выполняет следующие действия:
1. Создает объект StringBuilder для формирования части WHERE запроса.
2. Получает значения параметров из JSON-строки, используя методы getStringParam и getIntParam.
3. Проверяет каждый параметр на равенство null. Если параметр не равен null, то добавляет условие в часть WHERE запроса, используя метод append объекта StringBuilder.
4. Удаляет последний "AND" из части WHERE запроса, чтобы избежать синтаксических ошибок.
5. Формирует и возвращает итоговый запрос, объединяя начало SQL-запроса с частью WHERE.
Таким образом, данный код позволит сформировать часть WHERE запроса на основе переданного JSON-объекта с параметрами, используя StringBuilder.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет