java - 我可以在执行之前使用 AspectJ 切入点修改执行的 SQL

标签 java sql-server aspectj pointcuts

我正在尝试使用 AspectJ 将特定的 SQL 片段添加到系统中执行的所有 SQL 中。

我以前没有使用过 AspectJ,但我相信我需要做的是在

上创建切入点

调用(PreparedStatement Connection.prepareStatement(字符串))

并提供建议

之前(连接con,字符串sql): 调用(PreparedStatement Connection.prepareStatement(String)) && 目标(反) && 参数(sql) { sql = "执行 myStordProc();"+ sql; }

之后 Connection.prepareStatement() 方法将继续使用更改后的字符串?

或者我应该拦截对prepareStatement和executeQuery的调用并创建一条建议,将其更改为addBatch(),添加我的存储过程调用作为第一个批处理sql,然后原始sql最终使用executeBatch()执行?

任何指示将不胜感激。

谢谢

最佳答案

如果您想修改参数值,则需要使用 around 建议,以便可以使用修改后的值进行调用:

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

关于java - 我可以在执行之前使用 AspectJ 切入点修改执行的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244634/

相关文章:

java - 可视化工具,了解您的类(class)如何相互关联

Java:Group By 然后 Map

java - 如何使用两个数据模型在 RecyclerView 中创建多个 View 类型?

sql-server - 如何连接SQL Server 2008 Express?

grails aspectJ 字节码编织

java - 在 Eclipse 3.6.1 上安装 AspectJ 时遇到问题

java - 如何将AWT字体转换为SWT字体? SWT 不完整 : impossible to use font name from file

json - 在sql server中将查询输出转换为json格式

MySQL vs SQL Server 2008 R2 简单选择查询性能

Java同步和性能方面