mybatis 打印sql日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 打印sql日志相关的知识,希望对你有一定的参考价值。

参考技术A 查看mybatis源码,mybatis内部封装了日志接口,可以对接当前留下的所有的日志实现
在实际开发过程中或者生产环境查找定位问题,需要查看执行的sql语句,以下详细说明下如何将sql日志打印出来

直接贴源码

先贴源码

看源码可以看出,mybatis是按照顺序 slf4j->commonsLog->log4j2->log4j->jdkLog->noLog(空实现),这个顺序尝试加载日志实现的,
可能本地有多中日志实现,而项目中的日志实现与mybatis加载的日志实现不同导致的,排除无用的日志实现既可,或者高版本mybatis(高于3.2.0的版本)可以直接设置mybatis的日志实现

调整root节点的日志级别,会打印出其他jar包的日志,影响我们查看问题
可以直接跳转mybatis日志级别实现打印sql日志的需求

由于mybatis日志打印是使用jdk代理实现的,如果日志级为DEBUG,会走代理类打印日志,其他级别会走原无日志逻辑,且java.sql.Connection是开启代理日志的入口,所有java.sql.Connection必须设置为DEBUG级别

由于Log4j中的log的继承关系,配置mapper的上层包路径的日志级别也可以打印日志,比如com.example.log.mapper或com.example.log.mapper.UserMapper

mybatis低版本日志打印存在缺点: 当开启打印SQL日志后,会打印所有正在执行的SQL语句,不能实现针对特定SQL的打印,基于此 MyBatis 从3.2.0版本之后重新实现了相关功能

以上是关于mybatis 打印sql日志的主要内容,如果未能解决你的问题,请参考以下文章

yml的mybatis的sql查看;Mybatis+Springboot 控制台查看日志,Mybatis结合springboot打印日志

SpringBoot中Mybatis打印sql日志

SpringBoot中Mybatis打印sql日志

Log日志打印mybatis中sql日志并存放到指定文件中

mybatis的Sql语句打印

Mybatis打印SQL