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>