gpt4 book ai didi

java - 记录 JdbcTemplate 查询执行时间

转载 作者:行者123 更新时间:2023-11-30 02:29:19 27 4
gpt4 key购买 nike

我正在编写一个通过org.springframework.jdbc.core.JdbcTemplate使用数据库的应用程序。我需要记录这些查询的执行情况。所以我有一些具有 jdbctemplate 逻辑的方法,例如

List<Map<String, Object>> data = jdbcTemplate.queryForList(queryTables);

我需要记录此查询的执行时间,但不需要记录 all 方法的执行时间。我可以通过毫秒减法来做到这一点。但如果我有 1500 个方法甚至更多,情况就不是这样了。那么有没有任何注释或任何其他方法可以帮助我记录执行时间?

最佳答案

  1. Spring 使用StopWatch对于测量执行时间,apache也有相同的StopWatch 。秒表示例 - https://www.javacodegeeks.com/2012/08/measure-execution-time-in-java-spring.html

  2. 使用 aop 来节省执行时间。这是示例 https://veerasundar.com/blog/2010/01/spring-aop-example-profiling-method-execution-time-tutorial/

    使用 aop 和自定义注释,您可以标记要记录执行时间的方法。

aop - 开销并没有那么大,当你使用@Transactional时你也使用了aop,所以你已经有了这个开销

<小时/>

如果您只想记录 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;
}

关于java - 记录 JdbcTemplate 查询执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44656292/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com