當前位置:首頁 » 編程語言 » mybatis配置列印sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mybatis配置列印sql

發布時間: 2023-04-13 11:20:22

1. mybatis 怎麼列印sql

其實很簡單,列印SQL只需要加一個setting就可以了。親測可用。
mybatis-config.xml:

<settings>
        <setting name="cacheEnabled" value="true" />
        <!-- 列印sql日誌 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    <typeAliases>
        <!-- 指定實體類 別名掃描包,mapper.xml文件中只需要寫上實體類名即可,不區分大小寫 -->
        <package name="com.renrenhua.user.entity"/>
    </typeAliases>

mybatis的日誌列印方式比較多,SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根據自己的需要進行配置

2. mybatis 列印sql日誌

查看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版本之後重新實現了相關功能

3. mybatis怎麼列印sql語句

此處使用log4j,加入jar包,然後在src路徑下加入:log4j.properties文件
填入以下配置就可以列印了
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

4. 【Mybatis】列印執行的SQL

除了自己寫的SQL,使用原生XML配置的SQL很難看到設置了各種參數後真正拼成的SQL長什麼樣,導致出錯後調試難度升級,所以要把實際執行的SQL打出來,便於調查。

在SPRINGBOOT的配置文件application.yml里配置LOG輸出等級

其中,com.lea.mall.tiny.mbg.mapper 為MYBATIS的介面mapper包名

5. Mybatis-Plus配置在控制台列印SQL語句

application.yml配置方式

application.properties配置方式備輪消仿知

列印效桐乎果

6. 如何在mybatis中列印sql

mybatis列印sql
用於在後台列印執行的sql,在applicationContext.xml中的<bean
id="sqlSessionFactory"
標簽中添加:
<property
name="configLocation"
value="classpath:mybatis-config.xml"
/>
即可列印sql語句
此方法僅用於開發調試,配置之後請勿提交!

7. 請教問Mybatis 如何列印SQL語句

MyBatis自己內部使用的是Log4j,但實際上支持用戶使用各種Log技術。如果配置正確的話,也就是啟用debug級別即凳襲可列印所有的MyBatis的語句。比如,在森粗襲我的web程序中,此兄使用logback,maven依賴如下:

<!--log-begin-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.27</version>
</dependency>
<!--log-end-->

8. mybatis 怎麼列印sql

此處使用log4j,加入jar包,然後在src路徑下加入:log4j.properties文件
填入以下配置就可以列印了

log4j.rootLogger=DEBUG, Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

9. 如何讓mybatis列印出執行的sql

mybatis默認使用log4j,當有self4j這個日誌jar包存在時會無法列印sql,請移除或者在工程啟動時顯示設置mybatis使用的日誌類:
log4j.logger.org.apache.ibatis=debug,stdout log4j.logger.java.sql=debug,stdout
這樣有時可能卻不是個可行的辦法,原因在於不可能移除self4j包,因為其他依賴包必須依賴這個包。 mybatis有如下方法來手動選擇日誌類,調用後成功列印日誌 如果引用了slf4j的包,並且要使用log4j需要加入slf4j-log4j12的包,如果沒有加入slf4j-log4j12的包是無法列印sql的。。具體log4j文件如下:

log4j.rootCategory=info, stdout , R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.Conversion
Pattern=[QC] %p [%t] %C.%M(%L) | %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\report.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug

log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout

現在重啟tomcat,執行一條語句看看,sql是不是都出來了

10. SpringBoot 中的 Mybatis 列印 執行過的SQL語句

在SpringBoot 中使用基於 Mybatis 框架,開發過程中,想看 Mybatis 生成的 sql語句 情況,做下配置即可。

非常簡單,如果使用的是application.yml文件,加入如下配置:

注意上面的 com.example.demo. 是個包名,指向你的mapper的包即可。