计数 JdbcTemplate 查询

Posted

技术标签:

【中文标题】计数 JdbcTemplate 查询【英文标题】:Counting JdbcTemplate queries 【发布时间】:2018-07-05 14:30:55 【问题描述】:

我们需要计算我们的 Web 应用程序针对每个请求发送到数据库的查询数(以及结果行数)。我们可以通过手动计数轻松实现这一点(每次调用JdbcTemplate.query*,增加一个计数器),但是这很容易在以后忘记,这会导致错误的结果。

有没有办法向 JdbcTemplate 或 DataSource 添加一个拦截器来为我们做到这一点,或者有没有办法在使用 H2 等测试数据库时验证结果,以便我们至少可以证明正确性?

【问题讨论】:

这里好像需要一个查询监听器。 H2 提供什么样的日志记录?也许将 H2 记录的查询与应用的 IP 相关联。 【参考方案1】:

您可能希望使用例如拦截 JDBC 驱动程序。 JDBCSpy.

特点

记录所有SQL语句的执行和迭代时间 识别多次执行的语句 所有列出的语句都具有可配置深度的堆栈跟踪 提供所有连接、SQL 语句、结果集的统计信息 提供结果集的大小 提供一个 API 来检索所有统计信息 列出当前正在执行的所有语句 列出所有已执行但尚未关闭的语句 如果语句的执行时间超过可配置的阈值,则通知(例如通过跟踪) 在您忘记关闭结果集或连接关闭之前的语句时通知 支持不同的记录器(log4j、java logging、slf、...) 可由自定义侦听器扩展

该项目似乎不再积极维护,但它应该为您提供一个起点。通过拦截 JDBC,您将确保无论查询如何执行,例如手动ConnectionJdbcTemplate或JPA所有查询都会被拦截。

【讨论】:

以上是关于计数 JdbcTemplate 查询的主要内容,如果未能解决你的问题,请参考以下文章

Spring JdbcTemplate详解

Spring JdbcTemplate详解

SpringJDBCTemplate

spring jdbcTemplate insert插入Oracle数据库后返回当前主键id

spring jdbcTemplate查询使用

JdbcTemplate进行查询