我正在编写一个方法,尝试记录数据库调用,形成连接到它的连接,在查询之后,有很多地方调用方法 connect() 来启动并调用 cleanUp() 方法来结束,我可以不也不想修改每个地方。所以顺序是这样的:
Connection con = ...
connect();
s = con.createStatement();
ResultSet rs = s.executeQuery(" select * from xyz ");
rs.next();
cleanUp();
有很多方法使用这个序列,那么我如何在 cleanUp() 中以某种方式从运行查询的所有方法中获取 sql 查询字符串 [在本例中: select * from xyz ],是否有一个从“con”获取该信息的方法,con对象是否知道它刚刚运行了什么查询?
最佳答案
我建议您使用方面,AspectJ 对于这种情况来说是完美的。 使用方面,一旦执行受监视的方法,您就可以触发行为。 您可以检查以下几个示例:http://www.yegor256.com/2014/06/01/aop-aspectj-java-method-logging.html和 https://mathewjhall.wordpress.com/2011/03/31/tracing-java-method-execution-with-aspectj/
关于java - 如何从Java中的连接获取查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39883597/