Можно выполнять логику предварительной и последующей обработки при выполнении SQL.
Содержит два метода, которые вызываются до и после выполнения SQL соответственно.
CommandContext
содержит всю информацию о текущем выполняемом SQL, включая параметры. Изменение его содержимого повлияет на поведение выполнения SQL.
Может быть несколько перехватчиков. Если метод executeBefore
одного из них возвращает значение false
, фактическая операция с базой данных не будет выполнена, но метод executeAfter
всё равно будет выполнен, а commandResult
будет иметь значение null
.
/**
* @author selfly
*/
public interface PersistInterceptor {
/**
* Вызов перед выполнением
*
* @param dialect the dialect
* @param commandContext the command context
* @param commandType the command type
* @return the boolean
*/
default boolean executeBefore(String dialect, CommandContext commandContext, CommandType commandType) {
return true;
}
/**
* Вызов после выполнения, возвращаемый результат заменит фактический результат запроса
*
* @param dialect the dialect
* @param commandContext the command context
* @param commandType the command type
* @param commandResult the command result
* @return the object
*/
default Object executeAfter(String dialect, CommandContext commandContext, CommandType commandType, Object commandResult) {
return commandResult;
}
}
При объявлении JdbcEngine
можно добавить необходимые перехватчики:
JdbcTemplateEngineConfigImpl jdbcTemplateEngineConfig = new JdbcTemplateEngineConfigImpl();
jdbcTemplateEngineConfig.setDataSource(getDataSource());
final List<PersistInterceptor> persistInterceptors = new ArrayList<>();
// Добавляем необходимые перехватчики
persistInterceptors.add(new XXXInterceptor())
jdbcTemplateEngineConfig.setPersistInterceptors(persistInterceptors);
defaultJdbcEngine = new JdbcEngineImpl(jdbcTemplateEngineConfig);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )