Если я правильно понимаю, вы хотите генерировать запросы динамически, в зависимости от значения полей ввода.Существуют фреймворки, помогающие сделать это, например MyBatis .Но вы можете подготовить собственное решение с помощью готовых операторов:
String query = "select * from foo f";
List<String> clauses = new ArrayList<String>();
List<Object> parameters = new ArrayList<Object>();
if (firstName != null) {
clauses.add("f.name = ?");
parameters.add(firstName);
}
// ...
if (!clauses.isEmpty()) {
query += " where " + StringUtils.join(clauses, " and ");
}
PreparedStatement ps = connection.prepareStatement(query);
for (int i = 0; i < parameters.size(); i++) {
ps.setObject(i + 1, paremeters.get(i));
}
Вы можете сделать его еще лучше, поддерживая типы SQL, используя шаблон компоновщика и т. Д., Но вы должны понять эту идею на этом простом примере.