Я работаю над Java-приложением со связью Spring и JDBC.Я не кодировал приложение сам, и я в некотором роде новичок в некоторых фреймворках и последствиях этого.
Я проследил путь прохождения операторов sql, однако я застрял в какой-то момент, когда я делаюне найти никаких деталей о вызываемом методе и классе, к которому он принадлежит.Метод импортируется через import de.dit.icr.frontend.ProxyBean;
В основном все запросы содержатся в одном файле «query.xml», который передается в объект «ProxyBean», который затем передается с картой параметров, а затемВызывается метод "getStatement ()", который возвращает подготовленную строку запроса.
Я хотел бы разделить файл query.xml на отдельные файлы sql (по одному для каждого запроса) и реализовать новый методвместо proxyBean.getStatement () он по-прежнему принимает карту параметров, имя запроса и подготавливает оператор.
Для этого мне нужно кое-что прояснить: - гдеэтот класс ProxyBean?Из внешней библиотеки, и если да, то какая?- Какой метод, какую библиотеку можно использовать для создания строки подготовленного оператора SQL из файла SQL и карты параметров?
Большое спасибо за вашу помощь!
Вот упрощенныйпредставление кода:
import de.dit.icr.frontend.ProxyBean;
import de.dit.icr.util.Url;
import de.dit.itsales.dbi.util.DBUtil;
import de.dit.itsales.dbi.util.Log;
public class IASAdapterImpl implements IASAdapter {
private static final String[] QUERY_FILES = {"query.xml"};
private static final String RELATIVE_PATH_TO_QUERY_FILE = "queries";
public IASAdapterImpl() {
init();
}
private void init() {
String key = "queries";
String pathToQueryFile = DBUtil.getInstance().getConfigDir() + RELATIVE_PATH_TO_QUERY_FILE;
Url.register(key, pathToQueryFile);
createProxyBean();
}
public synchronized String getQuery(String queryName, Map<String,String> queryVariables, boolean resolveNames) {
ProxyBean proxyBean = createProxyBean();
setParameter(queryVariables, proxyBean);
String temp = proxyBean.getStatement(queryName, resolveNames);
return temp;
}
private ProxyBean createProxyBean() {
ProxyBean bean = new ProxyBean();
for (int i = 0; i < QUERY_FILES.length; i++) {
bean.setQuerySet(QUERY_FILES[i]);
}
return bean;
}
private void setParameter(Map<String,String> map, ProxyBean bean) {
if(map == null || map.isEmpty()) {
return;
}
for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
bean.set(key, entry.getValue());
}
}
Пример query.xml :
<query name = "alle-fonds"><![CDATA[
select fondsnummer,
spokid,
mfnummer,
fondsname,
bewertungsdatum,
letztebewertung,
hauptfonds,
performancegraphrelevant
from rep.v_alle_fonds where anwender_login = '${loginname}'
and sprache = lower('${sprache}')
order by mfnummer
]]></query>