Могу ли я изменить исполняемый SQL перед выполнением, используя pointpect AspectJ - PullRequest
1 голос
/ 09 марта 2011

Я пытаюсь добавить определенный фрагмент SQL ко всем SQL, выполняемым в системе с использованием AspectJ.

Я не использовал AspectJ раньше, но я считаю, что мне нужно сделать, это создать pointcut на

вызов (PreparedStatement Connection.prepareStatement (String))

и предоставление совета

before (Connection con, String sql): call (PreparedStatement Connection.prepareStatement (String)) && target (con) && args (sql) {sql = "exec myStordProc ();"+ sql;}

, после чего метод Connection.prepareStatement () продолжит работу с измененной строкой?

Или я должен перехватывать вызовы prepareStatement и executeQuery и создавать совет, который изменяет это на addBatch() добавление моего хранимого вызова procdure в качестве первого пакетного sql, а затем исходного sql, наконец, выполняющегося с executeBatch ()?

Любые указатели будут высоко оценены.

Спасибо

1 Ответ

1 голос
/ 09 марта 2011

Если вы хотите изменить значение параметра, вам нужно будет использовать рекомендации, чтобы вы могли сделать вызов с вашим измененным значением:

around(...): ... {
    proceed("exec myStordProc();" + sql);
}
...