我正在尝试使用 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/