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

时间:2011-03-09 10:45:16

标签: java sql-server aspectj pointcuts

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

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

上创建一个切入点

call(PreparedStatement Connection.prepareStatement(String))

并提供建议

之前(Connection con,String sql):         call(PreparedStatement Connection.prepareStatement(String))         &安培;&安培;目标(CON)         &安培;&安培; args(sql){     sql =“exec myStordProc();” + sql; }

之后,Connection.prepareStatement()方法将继续使用更改后的String?

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

任何指针都会非常感激。

由于

1 个答案:

答案 0 :(得分:1)

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

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