当前位置:首页 » 编程语言 » 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>