当前位置: 首页 > news >正文

如何在项目中打印sql和执行的时间

目标:打印DAO方法中sql和执行的时间

一种方式是去实现Mybatis的拦截器Interceptor ,比较麻烦;
这里介绍一种比较简单的实现方式;

1、如何打印sql?

配置文件加这个可以打印出com.zhenhui.ids.busi.watch包下执行的sql

logging.level.com.zhenhui.ids.busi.watch=debug

2、如何打印sql执行时间
com.zhenhui.ids.busi.watch 包下有多个子包,大部分子包下有DAO结尾的类,或者是Dao结尾
在这里插入图片描述

新建AOP切面类:MapperAspect


package com.zhenhui.ids.busi.watch.config;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;import java.util.Arrays;@Aspect
@Component
@Slf4j
public class MapperAspect {@Pointcut("execution(* com.zhenhui.ids.busi.watch..*DAO.*(..))|| " +"execution(* com.zhenhui.ids.busi.watch..*Dao.*(..))) ")private void pointCutMethod() {}@Around("pointCutMethod()")public Object doAround(ProceedingJoinPoint pjp)  {long begin = System.nanoTime();Object obj = null;try {obj = pjp.proceed();}catch (Throwable throwable) {log.info("执行异常");}long end = System.nanoTime();log.info("调用Mapper方法:{},参数:{},\n耗时:{}毫秒",pjp.getSignature().toString(), Arrays.toString(pjp.getArgs()), (end - begin) / 1000000);return obj;}
}

相关文章:

  • 机器学习的持续交付-CD4ML 端到端自动化构建部署机器学习应用
  • RuoYi-后端管理项目入门篇1
  • Jupyter Notebook安装及基本使用
  • arm的GIC中断
  • c++初阶知识——内存管理与c语言内存管理对比
  • B树与B+树的区别
  • 中间件的理解
  • 数据建模标准-关系建模
  • Airtest的控制手机滑动位置偏差修正方法总结
  • yearrecord——一个类似痕迹墙的React数据展示组件
  • 鸿蒙架构之AOP
  • WordPress 主题技巧:给文章页增加“谁来过”模块。
  • 处理uniapp刷新后,点击返回按钮跳转到登录页的问题
  • 手机数据恢复篇:如何从 Android 设备内恢复数据
  • 【leetcode】 字符串相乘(大数相乘、相加)
  • 5、React组件事件详解
  • CentOS 7 修改主机名
  • Git初体验
  • hadoop集群管理系统搭建规划说明
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Just for fun——迅速写完快速排序
  • mongodb--安装和初步使用教程
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • passportjs 源码分析
  • rabbitmq延迟消息示例
  • Redux系列x:源码分析
  • tab.js分享及浏览器兼容性问题汇总
  • 解决iview多表头动态更改列元素发生的错误
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 一、python与pycharm的安装
  • nb
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #预处理和函数的对比以及条件编译
  • $.ajax()参数及用法
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (23)Linux的软硬连接
  • (NSDate) 时间 (time )比较
  • (ZT)薛涌:谈贫说富
  • (阿里云万网)-域名注册购买实名流程
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (论文阅读40-45)图像描述1
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)菜鸟学数据库(三)——存储过程
  • (转)大型网站的系统架构
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET gRPC 和RESTful简单对比
  • .Net 知识杂记
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET委托:一个关于C#的睡前故事