如何开启控制台输出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日志
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。