1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/selfly-sonsure-dumper

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
conversion-handler.md 2.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:43 e04b5c0

Анализ и преобразование SQL. CommandConversionHandler

Обычно объекты, с которыми работает JdbcDao, представляют собой имена классов и свойств. Перед окончательным выполнением в базе данных (до PersistExecutor) они преобразуются в имена таблиц и столбцов.

Эту часть преобразования выполняет CommandConversionHandler.

CommandConversionHandler определяется одним методом:

public interface CommandConversionHandler {

    /**
     * Преобразование команды
     *
     * @param command команда
     * @param params  
     * @return string строка
     */
    String convert(String command, Map<String, Object> params);

}

Он принимает на вход команду до преобразования и параметры, а возвращает преобразованную команду (обычно это SQL).

По умолчанию для преобразования используется JSqlParser. Реализация — класс JSqlParserCommandConversionHandler.

Если JSqlParserCommandConversionHandler не удовлетворяет требованиям, можно реализовать собственный CommandConversionHandler и настроить его в JdbcEngine.

Эффект будет таким же, как при отсутствии commandConversionHandler:

<bean id="mappingHandler" class="com.sonsure.dumper.core.mapping.DefaultMappingHandler">
    <constructor-arg name="modelPackages" value="com.sonsure.dumper.test.model.**"/>
</bean>

<bean id="jSqlParserCommandConversionHandler" class="com.sonsure.dumper.core.command.sql.JSqlParserCommandConversionHandler">
    <property name="mappingHandler" ref="mappingHandler"/>
</bean>

<bean id="jdbcTemplateEngine" class="com.sonsure.dumper.springjdbc.config.JdbcTemplateEngineFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingHandler" ref="mappingHandler"/>
    <property name="commandConversionHandler" ref="jSqlParserCommandConversionHandler"/>
</bean>

<bean id="jdbcDao" class="com.sonsure.dumper.springjdbc.persist.SpringJdbcDaoTemplateImpl">
    <property name="defaultJdbcEngine" ref="jdbcTemplateEngine"/>
</bean>

Примечание: если выполняется пользовательский SQL и вызывается метод nativeCommand(), преобразование через commandConversionHandler осуществляться не будет.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/selfly-sonsure-dumper.git
git@api.gitlife.ru:oschina-mirror/selfly-sonsure-dumper.git
oschina-mirror
selfly-sonsure-dumper
selfly-sonsure-dumper
master