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

mybatis查看sql日誌

發布時間: 2022-04-24 12:15:39

1. 如何在mybatis中調試查看生成的sql語句

用log4j把sql列印到日誌文件或者控制台即可。

把我代碼里log的配置貼一份 供參考
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

2. 如何在mybatis中調試查看生成的sql語句

我推薦使用log4jdbc或是log4jdbc-remix,其實這2個都差不多,這個會把你sql的的?以實際的值填充進去,對查看生成的sql非常有幫助

3. 如何控制Mybatis的SQL日誌輸出

您好,很高興為您解答。使用環境:Mybatis_3.2.8 + Log4j2_2.1 首先要說明的是:
Mybatis是用Mapper類的全路徑名,作為logger的名稱的。
Mybatis中,列印SQL語句的日誌級別是DEBUG,而列印SQL執行結果集的日誌級別是TRACE。
比如,我們的應用是: com.test.app 而mapper類所在的路徑為: com.test.app. 則我們可以分別控制應用的業務日誌和SQL日誌的輸出。 如下的Log4j2.xml將輸出所有業務日誌,以及SQL語句日誌
引用

1
2
3
4
5
6
7
8
9
10

<Loggers>
<Logger name="com.test.app." additivity="false" level="DEBUG">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger> 您好,很高興為您解答。使用環境:Mybatis_3.2.8 + Log4j2_2.1 首先要說明的是:
Mybatis是用Mapper類的全路徑名,作為logger的名稱的。
Mybatis中,列印SQL語句的日誌級別是DEBUG,而列印SQL執行結果集的日誌級別是TRACE。
比如,我們的應用是: com.test.app 而mapper類所在的路徑為: com.test.app. 則我們可以分別控制應用的業務日誌和SQL日誌的輸出。 如下的Log4j2.xml將輸出所有業務日誌,以及SQL語句日誌
引用

1
2
3
4
5
6
7
8
9
10

<Loggers>
<Logger name="com.test.app." additivity="false" level="DEBUG">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>

4. 如何把mybatis sql日誌通過logback打到文件里

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 當發生滾動時 TimeBasedRollingPolicy滾動策略 根據時間來制定滾動策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滾 daily -->
<!-- local
<fileNamePattern>/Users/liyixiang/Documents/logs/xxx-xxx-${appPort}-%d{-MM-dd}.log</fileNamePattern>
-->
<!-- log.dir 在maven profile里配置 -->
<fileNamePattern>/logs/xxx-xxx-${appPort}-%d{-MM-dd}.log</fileNamePattern>
<!-- 控制保留的歸檔文件的最大數量 日誌最大的歷史 5天 -->
<maxHistory>5</maxHistory>
</rollingPolicy>
<!-- 日誌格式化 -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%msg]%n</pattern>
</encoder>
<p>
</appender>
</p>

<p>
<br>

</p>

<p>

</p><pre class="brush:xml; toolbar: true; auto-links: false;">具體的pattern可以查詢logback pattern like this --> </pre>
<p></p>

5. mybatis怎麼在控制台列印sql語句

mybatis默認使用log4j,當有self4j這個日誌jar包存在時會無法列印sql,請移除或者在工程啟動時顯示設置mybatis使用的日誌類
log4j.logger.org.apache.ibatis=debug,stdout
log4j.logger.java.sql=debug,stdout

6. 如何在mybatis中調試查看生成的sql語句

mybatis的源碼中查看生成的sql語句,參考執行以下代碼即可。具體代碼如下:把裡面PooledDataSource類的log輸出部分,換成log.warn之後,重新打jar包,放到項目中,日誌級別改為info,如:log4j.rootLogger=info,stdout,Rlog4j.appender.std

7. mybatis 怎麼寫分頁動態查詢sql語句

1、親Mybatis是自己寫Sql語句啊,和Hibernate不一樣。
2、如何知道上面的,你還要知道MySql有一個分頁語句叫limit,如:limit(1,10);前面一個參數是起始未知,後面一個是查詢多少個。
3、Oracle的分頁方法是嵌套子查詢,需要用到rownum這個屬性
Sql Server是Top。

分頁例子:
Oracle select * from (select emp.*,rownum rn from emp where rownum<9) where rn>3;
MySql select * from emp limit startIndex,maxNum

8. mybatis 怎麼讓將執行的sql語句記錄到日誌中

1.首先配置 log4j日誌文件
[html] view plain
#mybatis日誌范圍
log4j.logger.com.nes=TRACE
#ibatis配置
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.org.mybatis=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
2.導入依賴日誌包 log4j
[html] view plain
在CODE上查看代碼片派生到我的代碼片
<!-- SLFJ 可依賴到log4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>

9. Mybatis怎麼能看是否執行了sql語句

配置如下


在pom中增加如下依賴:


<dependency>

<groupId>org.bgee.log4jdbc-log4j2</groupId>

<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>

<version>1.16</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.13</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.13</version>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

<version>2.0-beta9</version>

</dependency>


log4j.properties如下配置log4j.rootLogger=debug,stdout


log4j.appender.stdout=org.apache.log4j.ConsoleAppender

#log4j.appender.stdout.Target=System.err

log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout


增加一個log4jdbc.log4j2.prpperties內容如下:


dbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

log4jdbc.debug.stack.prefix=

log4jdbc.sqltiming.warn.threshold=

log4jdbc.sqltiming.error.threshold=

log4jdbc.mp.booleanastruefalse=

log4jdbc.mp.sql.maxlinelength=

log4jdbc.mp.fulldebugstacktrace=

log4jdbc.statement.warn=

log4jdbc.mp.sql.select=

log4jdbc.mp.sql.insert=

log4jdbc.mp.sql.update=

log4jdbc.mp.sql.delete=

log4jdbc.mp.sql.create=

log4jdbc.mp.sql.addsemicolon=

log4jdbc.auto.load.popular.drivers=

log4jdbc.trim.sql=

log4jdbc.trim.sql.extrablanklines=

log4jdbc.suppress.generated.keys.exception=

log4jdbc.drivers=


最後在mybatis的全局配置文件中


<dataSourcetype="POOLED">

<propertyname="driver"value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>

<propertyname="url"value="jdbc:log4jdbc:mysql://localhost:3306/test"/>

<propertyname="username"value="root"/>

<propertyname="password"value=""/>

</dataSource>