Java 记录JdbcTemplate查询执行时间
我正在编写一个应用程序,它通过Java 记录JdbcTemplate查询执行时间,java,jdbc,jdbctemplate,Java,Jdbc,Jdbctemplate,我正在编写一个应用程序,它通过org.springframework.jdbc.core.JdbcTemplate与db一起工作。我需要记录这些查询的执行情况。例如,我有一些具有jdbctemplate逻辑的方法 List<Map<String, Object>> data = jdbcTemplate.queryForList(queryTables); List data=jdbcTemplate.queryForList(queryTables); 我需要记录此
org.springframework.jdbc.core.JdbcTemplate
与db一起工作。我需要记录这些查询的执行情况。例如,我有一些具有jdbctemplate逻辑的方法
List<Map<String, Object>> data = jdbcTemplate.queryForList(queryTables);
List data=jdbcTemplate.queryForList(queryTables);
我需要记录此查询的执行时间,但不需要记录所有方法的执行时间。
我可以通过毫秒减法来实现。但如果我有1500种甚至更多的方法,情况就不是这样了。那么,是否有任何注释或其他方法可以帮助我记录执行时间
如果只想记录dbcTemplate.queryForList()和成对事件的执行时间,请使用秒表。或者您可以创建自己的util方法(wrap dbcTemplate.queryForList()),类似于:
public static List<?> queryForListWithLogExecution(String sql){
List<?> result;
//measuring elapsed time using Spring StopWatch
StopWatch watch = new StopWatch();
watch.start();
list = jdbcTemplate.queryForList(queryTables);
watch.stop();
logger.info("Total execution time in millis: {0}", watch.getTotalTimeMillis());
return result;
}
公共静态列表查询ForListWithLogExecution(字符串sql){
列出结果;
//使用弹簧秒表测量经过的时间
秒表=新秒表();
watch.start();
list=jdbcTemplate.queryForList(queryTables);
看,停;
info(“以毫秒为单位的总执行时间:{0}”,watch.getTotalTimeMillis());
返回结果;
}
JdbcTemplate的来源在哪里?使用方面可能是一种选择,但这会产生开销,至少必须记住这一点。简言之,不需要。您可以使用@Markus建议的内容或查看数据库本身。它可能允许你编程。我不确定计算时间的最佳方法是什么,但我制作了一个示例代码,其中我计算了多个方法的执行时间。希望它能工作:哦,有些数据库允许查询日志记录。这将有利于从测量中排除网络和内容。我的应用程序需要使用任何db,因此这不是解决方案