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的包即可。