Я согласен с пользователем kuriouscoder, что вы должны использовать переменные связывания. Это работает с простым JDBC. Большинство СУБД имеют кеш курсора, в котором хранятся как проанализированные версии запроса, так и планы выполнения в памяти, если запросы идентичны (т. Е. Нет встроенных переменных). Таким образом, накладные расходы синтаксического анализатора будут минимальными.
Что касается вывода XML, я могу порекомендовать jOOQ (разработчиком которого я являюсь). В следующей версии 1.6.2 я добавлю функции экспорта для различных форматов (XML, HTML, JSON, CSV). Ваш запрос будет построен с использованием свободно распространяемого API jOOQ и будет выглядеть так:
String xml = create.selectFrom(USER)
.where(USERID.equal(10))
.fetch()
.formatXML();
Вывод будет выглядеть следующим образом (и может быть преобразован в XSL в любой другой формат):
<result>
<fields>
<field name="USERID"/>
<field name="FIRSTNAME"/>
<field name="LASTNAME"/>
...
</fields>
<records>
<record>
<value field="USERID">1</value>
<value field="FIRSTNAME">Lukas</value>
<value field="LASTNAME">Eder</value>
...
</record>
...
</records>
</result>
Подробнее см. http://www.jooq.org