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

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

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

1、如何打印sql?

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

xml 复制代码
logging.level.com.zhenhui.ids.busi.watch=debug

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

新建AOP切面类:MapperAspect

java 复制代码
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;
    }
}
相关推荐
Vitaliy Kostrov(柯维远)1 分钟前
客户端如何检查直播流:从流内标记到停止播放
android·运维·服务器·驱动开发·网络安全·系统架构·cdn
betazhou4 分钟前
Apache Seatunnel 抽取SQL server实时同步到Oracle(四)
数据库·oracle·apache·sql server·seatunnel
l1t10 分钟前
DeepSeek总结的PostgreSQL 的 MVCC 很糟。其他所有的也一样。第1部分
数据库·postgresql
川石课堂软件测试18 分钟前
JMeter异步接口测试实战
数据库·python·jmeter·mysql·kubernetes·测试用例·prometheus
下页、再停留25 分钟前
【C#桌面客户端系列学习-14】SQLite数据库之增删改查完整示例
数据库·sqlite
她的男孩28 分钟前
JAR 全对仍 checksum mismatch:Forge Admin 把 Flyway 从 filesystem 改成 classpath
java·数据库·spring boot
恋猫de小郭31 分钟前
Dart 3.15 新特性:this 终于支持类型提升了
android·前端·flutter
我的愿望是成为富婆31 分钟前
2027校招|大数据管理与应用专业:从会用技术工具到解决业务问题
sql
小马不起床32 分钟前
Django 后端实战指南_16:动作分类、动作库、动作收藏查询接口
数据库·python·django
鸽芷咕35 分钟前
把 SQL 编辑器用顺:KSQL Developer 从补全到事务的实战笔记
笔记·sql·编辑器