如何開啟控制臺輸出mybatis執(zhí)行的sql日志問題
開啟控制臺輸出mybatis執(zhí)行的sql日志
開發(fā)時,輸出mybatis log,有助于快速定位sql問題,下面簡述添加配置,打開mybatis log
首先在配置文件application.properties中添加下面配置項(xiàng)
application.properties
然后再mybatis-config.xml中添加配置項(xiàng)如下:
<setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl" />
重新啟動項(xiàng)目,控制臺就能看到mybatis執(zhí)行的sql Log了。
mybatis輸出SQL日志問題
在開發(fā)環(huán)境調(diào)試代碼,往往需要打印執(zhí)行的SQL語句來判斷mybatis的SQL語句是否符合預(yù)期,尤其是我們的SQL語句使用了較多的<if>標(biāo)簽時,只有真正的執(zhí)行到了mybatis的標(biāo)簽解析器后,才能生成最終的SQL語句;
當(dāng)遇到SQL語句看似解析正常但是執(zhí)行的時候卻報錯,在這個時候如果mybatis本身的SQL日志沒有打印,將會是非常頭疼的。
介紹幾種獲取最終執(zhí)行的SQL語句的方法;
1. 斷點(diǎn)Mybatis的源碼
org.apache.ibatis.mapping.MappedStatement#getBoundSql
可以查看具體執(zhí)行的SQL和參數(shù)信息;
2. 在Mybatis的配置文件mybatis-config.xml添加相關(guān)配置
(1)第一步:mybatis-config.xml當(dāng)中添加對應(yīng)的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和對應(yīng)的參數(shù):
可以看到,sql的statement和parameter是分開的,在參數(shù)較多語句較復(fù)雜的情況下,不方便copy出來拿到MYSQL可視化工具中執(zhí)行;
此時,可以通過在IDEA的plugin market查找Mybatis Log Plugin來自動生成可執(zhí)行的SQL語句;
右鍵Tool在控制臺打開Mybatis Log Free的標(biāo)簽,然后點(diǎn)擊,效果如下:
如果工程基于自封裝的springboot且做了去xml化,工程中就找不到mybatis-config.xml配置文件;
mybatis-config一般放在dal模塊,是用來裝飾SqlSessionFactory這個bean的,如設(shè)置插件Plugin、數(shù)據(jù)源DataSource、Mapper文件對應(yīng)的xml路徑等配置,
這時候我們需要找到這個Bean(SqlSessionFactory),在創(chuàng)建Bean的代碼中去設(shè)置logImpl即可:
3. Springboot+Mybatis工程通過配置文件輸出SQL日志
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot集成Springbrick實(shí)現(xiàn)動態(tài)插件的步驟詳解
這篇文章主要介紹了Springboot集成Springbrick實(shí)現(xiàn)動態(tài)插件的詳細(xì)過程,文中的流程通過代碼示例介紹的非常詳細(xì),感興趣的同學(xué)可以參考一下2023-06-06springboot集成Swagger的方法(讓你擁有屬于自己的api管理器)
在大型的項(xiàng)目中,如果你有非常多的接口需要統(tǒng)一管理,或者需要進(jìn)行接口測試,那么我們通常會在繁雜地api中找到需要進(jìn)行測試或者管理的接口,接下來通過本文給大家介紹springboot集成Swagger的方法讓你擁有屬于自己的api管理器,感興趣的朋友一起看看吧2021-11-11java線程之使用Runnable接口創(chuàng)建線程的方法
本篇文章介紹了,java中使用Runnable接口創(chuàng)建線程的方法。需要的朋友參考下2013-05-05SpringBoot整合Mybatis簡單實(shí)現(xiàn)增刪改查
這篇文章主要介紹了SpringBoot整合Mybatis簡單實(shí)現(xiàn)增刪改查,文章為圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08Spring?Boot?Actuator?漏洞利用小結(jié)
spring對應(yīng)兩個版本,分別是Spring Boot 2.x和Spring Boot 1.x,因此后面漏洞利用的payload也會有所不同,這篇文章主要介紹了Spring?Boot?Actuator?漏洞利用小結(jié),需要的朋友可以參考下2023-11-11LinkedList學(xué)習(xí)示例模擬堆棧與隊列數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了LinkedList學(xué)習(xí)示例,模擬一個堆棧與隊列數(shù)據(jù)結(jié)構(gòu),大家參考使用吧2014-01-01jdk7 中HashMap的知識點(diǎn)總結(jié)
HashMap的原理是老生常談了,不作仔細(xì)解說。一句話概括為HashMap是一個散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。這篇文章主要總結(jié)了關(guān)于jdk7 中HashMap的知識點(diǎn),需要的朋友可以參考借鑒,一起來看看吧。2017-01-01