Возможно, вы захотите взглянуть на следующую утилиту.
http://commons.apache.org/dbutils/
Хотя это не даст прямого ответа на ваш вопрос, оно может пригодиться в будущем.Я тоже столкнулся с этой проблемой, и я разработал метод, который работал для меня, хотя и не самый лучший.Я создал метод, который автоматически заполняет значения из параметров, как вы предложили, но он вообще не делает это безопасным для типов способом.В любом случае, может быть, вы можете взять метод и улучшить его, если решите его использовать:
public static String preparedQueryString(String staticQuery, Object... parameters) {
for(Object curParameter : parameters) {
if(curParameter instanceof String) {
staticQuery = staticQuery.replaceFirst("\\?", "'" + curParameter.toString() + "'");
} else {
staticQuery = staticQuery.replaceFirst("\\?", curParameter.toString());
}
return staticQuery;
}
Возможно, вы также захотите добавить код, чтобы убедиться, что количество параметров не превышает количествоЗнаки вопроса, и вы также можете захотеть, чтобы java-типы более подходящим образом конвертировались в используемую вами базу данных.Я использовал это для вывода SQL-запроса PreparedStatement, так как у PreparedStatement нет каких-либо приятных функций, позволяющих вырвать законченный SQL-запрос после установки соответствующих параметров.