Понадобилось использовать StringBuilder
Я недавно столкнулся с задачей формирования части WHERE в sql-запросе, и решил использовать StringBuilder для этой цели. В моем случае, я получил строку запроса и json-строку с параметрами фильтрации. Моя задача состояла в том, чтобы построить часть WHERE с использованием этих параметров. Сначала, чтобы использовать StringBuilder, я создал новый объект этого класса. В моем случае, я назвал его ″queryBuilder″. Затем я написал код, который будет строить мою часть WHERE один параметр за другим. В моем случае, параметры были представлены в json-строке, поэтому мне понадобилось разобрать эту строку и получить значения параметров. Я использовал библиотеку JSON для этой цели. Далее, я использовал условные операторы для проверки значений параметров. Если значение параметра не равно null, я добавлял соответствующую часть к моему StringBuilder объекту. Я использовал функцию append для добавления строковых значений к моему StringBuilder объекту. Также, я использовал функцию toString для получения окончательной строки, которую я мог использовать в своем запросе.
В итоге, я получил строку запроса с заполненной частью WHERE на основе параметров фильтрации из json-строки. Я использовал StringBuilder для этой цели, потому что он позволяет эффективно конкатенировать строки, минимизируя создание новых строк в памяти.Вот пример кода, который я использовал⁚
java
import org.json.JSONObject;
public class Answer {
public static String answer(String QUERY, String PARAMS) {
StringBuilder queryBuilder new StringBuilder(QUERY);
JSONObject paramsJson new JSONObject(PARAMS);
// Проверка параметра ″name″
if (paramsJson.has(″name″)) {
String name paramsJson.getString(″name″);
if (name ! null) {
queryBuilder.append(″ AND name ‘″).append(name).append(″’″);
}
}
// Проверка параметра ″age″
if (paramsJson.has(″age″)) {
Integer age paramsJson.getInt(″age″);
if (age ! null) {
queryBuilder.append(″ AND age ″).append(age);
}
}
// Проверка параметра ″city″
if (paramsJson.has(″city″)) {
String city paramsJson.getString(″city″);
if (city ! null) {
queryBuilder.append(″ AND city ‘″).append(city).append(″’″);
}
}
return queryBuilder.toString;
}
}
В этом примере, метод answer принимает строку запроса QUERY и json-строку PARAMS. Он проверяет каждый параметр из PARAMS и добавляет соответствующие части WHERE к строке запроса QUERY, используя StringBuilder.
Теперь, когда у меня есть окончательная строка запроса с заполненной частью WHERE, я могу использовать ее для выполнения sql-запроса.