背景
最近面试经常被问到关于数据库的事务的问题,可能平时我就知道加个注解@Transactional之后就一脸懵逼的。现在发现这一块真的是常常被忽略了,然而面试官就是最喜欢这种看是不常用,但是非常重要的问题,进而达到出其不意攻其不备。不吹水了,开始正文。
方案一:切面编程@Aspect
此方案主要是通过环绕切面的方式将mapper包下的接口方法,然后前后计算时间差即可。这就是典型的AOP知识,不过这种计算比较粗糙,但是也是个办法。具体方法如下:
@Aspect
@Component
@Slf4j
public class MapperAspect {
@AfterReturning("execution(* cn.xbmchina.mybatissqltime.mapper.*Mapper.*(..))")
public void logServiceAccess(JoinPoint joinPoint) {
log.info("Completed: " + joinPoint);
}
@Pointcut("execution(* cn.xbmchina.mybatissqltime.mapper.*Mapper.*(..))")
private void pointCutMethod() {
}
@Around("pointCutMethod()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long begin = System.nanoTime();
Object obj = pjp.proceed();
long end = System.nanoTime();
log.info("调用Mapper方法:{},参数:{},执行耗时:{}纳秒,耗时:{}毫秒",
pjp.getSignature().toString(), Arrays.toString(pjp.getArgs()),
(end - begin), (end - begin) / 1000000);
return obj;
}
}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机mybatis统计每条SQL的执行时间的方法示例
数据库2024-04-02
mybatis设置sql执行时间超时时间的方法
数据库2024-04-02
Mysql中Performance_schema SQL执行统计的示例分析
数据库2024-04-02
Java统计代码的执行时间的N种方法
数据库2024-04-02
Python执行时间的计算方法小结
数据库2022-06-04
几种Python执行时间的计算方法
数据库2023-01-31
MySQL中按时间统计每个小时的记录数的示例分析
数据库2024-04-02
Mybatis执行SQL时多了一个limit的问题及解决方法
数据库2022-11-13
C++实现统计代码运行时间的示例详解
数据库2023-05-19
shell之定时周期性执行脚本的方法示例
数据库2022-06-04
Java计算程序代码执行时间的方法有哪些
数据库2023-05-30
使用Python统计代码运行时间的两种方法
数据库2022-12-23
在SQL语句统计数据时sum和count函数中使用if判断条件的示例分析
数据库2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧