如何开启控制台输出mybatis执行的sql日志问题

 更新时间:2023年09月22日 10:05:49   作者:叶枫^_^  
这篇文章主要介绍了如何开启控制台输出mybatis执行的sql日志问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

开启控制台输出mybatis执行的sql日志

开发时,输出mybatis log,有助于快速定位sql问题,下面简述添加配置,打开mybatis log

首先在配置文件application.properties中添加下面配置项

application.properties

然后再mybatis-config.xml中添加配置项如下:

<setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl" />

重新启动项目,控制台就能看到mybatis执行的sql Log了。

mybatis输出SQL日志问题

在开发环境调试代码,往往需要打印执行的SQL语句来判断mybatis的SQL语句是否符合预期,尤其是我们的SQL语句使用了较多的<if>标签时,只有真正的执行到了mybatis的标签解析器后,才能生成最终的SQL语句;

当遇到SQL语句看似解析正常但是执行的时候却报错,在这个时候如果mybatis本身的SQL日志没有打印,将会是非常头疼的。

介绍几种获取最终执行的SQL语句的方法;

1. 断点Mybatis的源码

org.apache.ibatis.mapping.MappedStatement#getBoundSql

可以查看具体执行的SQL和参数信息;

2. 在Mybatis的配置文件mybatis-config.xml添加相关配置

(1)第一步:mybatis-config.xml当中添加对应的setting,增加日志输出。

(2)第二步:<setting name="logImpl" value="STDOUT_LOGGING"/>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!--以上省略-->
    <properties>
        <property name="dialect" value="mysql"/>
    </properties>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
 	<!--以下省略-->
    <plugins>
        <plugin interceptor="com.AA.framework.mybatis.singleton.SlaverPlugin"/>
    </plugins>
</configuration>

具体日志的输出,可以看到具体的SQL和对应的参数:

可以看到,sql的statement和parameter是分开的,在参数较多语句较复杂的情况下,不方便copy出来拿到MYSQL可视化工具中执行;

此时,可以通过在IDEA的plugin market查找Mybatis Log Plugin来自动生成可执行的SQL语句;

右键Tool在控制台打开Mybatis Log Free的标签,然后点击,效果如下:

如果工程基于自封装的springboot且做了去xml化,工程中就找不到mybatis-config.xml配置文件;

mybatis-config一般放在dal模块,是用来装饰SqlSessionFactory这个bean的,如设置插件Plugin、数据源DataSource、Mapper文件对应的xml路径等配置,

这时候我们需要找到这个Bean(SqlSessionFactory),在创建Bean的代码中去设置logImpl即可:

3. Springboot+Mybatis工程通过配置文件输出SQL日志

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在Java中使用YOLO模型的几种方式详解

    在Java中使用YOLO模型的几种方式详解

    Yolo是一种基于深度学习的目标检测算法,它可以在一张图像中同时检测出多个目标,并给出它们的位置和类别,相比于传统的目标检测算法,Yolo算法具有检测速度快、精度高等优点,本文给大家介绍了在Java中使用YOLO模型的几种方式,需要的朋友可以参考下
    2025-06-06
  • JAVA DOM解析XML文件过程详解

    JAVA DOM解析XML文件过程详解

    这篇文章主要介绍了JAVA DOM解析XML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Springboot配置文件内容加密代码实例

    Springboot配置文件内容加密代码实例

    这篇文章主要介绍了Springboot配置文件内容加密代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • SpringBoot使用Maven打包后运行失败的问题解决详解

    SpringBoot使用Maven打包后运行失败的问题解决详解

    在使用 Spring Boot 开发项目时,我们通常会使用 Maven 作为构建工具,但有时会出现运行失败的情况,本文将从多个角度分析常见错误场景,并提供详细的排查和解决方案,希望对大家有所帮助
    2025-07-07
  • Java和Python现在都挺火,我应该怎么选?

    Java和Python现在都挺火,我应该怎么选?

    这篇文章主要介绍了Java和Python现在都挺火,我应该怎么选?本文通过全面分析给大家做个参考,需要的朋友可以参考下
    2020-07-07
  • Java多线程中的ThreadPoolExecutor使用解析

    Java多线程中的ThreadPoolExecutor使用解析

    这篇文章主要介绍了Java多线程中的ThreadPoolExecutor使用解析,作为线程池的缓冲,当新增线程超过maximumPoolSize时,会将新增线程暂时存放到该队列中,需要的朋友可以参考下
    2023-12-12
  • java自定义Scanner类似功能类的实例讲解

    java自定义Scanner类似功能类的实例讲解

    这篇文章主要介绍了java自定义Scanner类似功能类的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java中switch的三种用法方式

    Java中switch的三种用法方式

    这篇文章主要介绍了Java中switch的三种用法方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 如何把spring boot应用发布到Harbor

    如何把spring boot应用发布到Harbor

    这篇文章主要介绍了如何把spring boot应用发布到Harbor,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java线程Dump分析工具jstack解析及使用场景

    Java线程Dump分析工具jstack解析及使用场景

    这篇文章主要介绍了Java线程Dump分析工具jstack解析及使用场景,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论