Подготовьте оператор SQL прямо из файла sql и карты параметров - PullRequest
0 голосов
/ 23 октября 2018

Я работаю над 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...