Обычно объекты, с которыми работает 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 )