如何开启控制台输出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日志

总结

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

相关文章

  • Springboot集成Springbrick实现动态插件的步骤详解

    Springboot集成Springbrick实现动态插件的步骤详解

    这篇文章主要介绍了Springboot集成Springbrick实现动态插件的详细过程,文中的流程通过代码示例介绍的非常详细,感兴趣的同学可以参考一下
    2023-06-06
  • Java之CountDownLatch原理全面解析

    Java之CountDownLatch原理全面解析

    这篇文章主要介绍了Java之CountDownLatch原理解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • gradle和maven有哪些区别

    gradle和maven有哪些区别

    这篇文章主要介绍了gradle和maven有哪些区别,帮助大家更好的理解和选择java程序的构建工具,感兴趣的朋友可以了解下
    2021-01-01
  • springboot集成Swagger的方法(让你拥有属于自己的api管理器)

    springboot集成Swagger的方法(让你拥有属于自己的api管理器)

    在大型的项目中,如果你有非常多的接口需要统一管理,或者需要进行接口测试,那么我们通常会在繁杂地api中找到需要进行测试或者管理的接口,接下来通过本文给大家介绍springboot集成Swagger的方法让你拥有属于自己的api管理器,感兴趣的朋友一起看看吧
    2021-11-11
  • java线程之使用Runnable接口创建线程的方法

    java线程之使用Runnable接口创建线程的方法

    本篇文章介绍了,java中使用Runnable接口创建线程的方法。需要的朋友参考下
    2013-05-05
  • SpringBoot整合Mybatis简单实现增删改查

    SpringBoot整合Mybatis简单实现增删改查

    这篇文章主要介绍了SpringBoot整合Mybatis简单实现增删改查,文章为围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 四个Java必须知道的负载均衡算法分享

    四个Java必须知道的负载均衡算法分享

    我们在设计系统的时候,为了系统的高扩展性,会创建无状态的系统。但是,要使系统具有更好的可扩展性,除了无状态设计之外,还要考虑采用什么负载均衡算法,本文就带领大家认识以下常见的4种负载均衡算法
    2023-01-01
  • Spring Boot Actuator 漏洞利用小结

    Spring Boot Actuator 漏洞利用小结

    spring对应两个版本,分别是Spring Boot 2.x和Spring Boot 1.x,因此后面漏洞利用的payload也会有所不同,这篇文章主要介绍了Spring Boot Actuator 漏洞利用小结,需要的朋友可以参考下
    2023-11-11
  • LinkedList学习示例模拟堆栈与队列数据结构

    LinkedList学习示例模拟堆栈与队列数据结构

    这篇文章主要介绍了LinkedList学习示例,模拟一个堆栈与队列数据结构,大家参考使用吧
    2014-01-01
  • jdk7 中HashMap的知识点总结

    jdk7 中HashMap的知识点总结

    HashMap的原理是老生常谈了,不作仔细解说。一句话概括为HashMap是一个散列表,它存储的内容是键值对(key-value)映射。这篇文章主要总结了关于jdk7 中HashMap的知识点,需要的朋友可以参考借鉴,一起来看看吧。
    2017-01-01

最新评论