Mybatis配置日志打印

本文介绍两种在MyBatis中打印拼接后的完整SQL的方法,包括在mybatis-config.xml中配置日志实现和在logback-spring.xml中设置DEBUG级别。

在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们。但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中直接找出完整的sql就会非常的难,这个时候经常会需要把组合之后的完整sql打印出来。

方法一:在mybatis-config.xml文件中增加如下配置

<settings>
		<setting name="cacheEnabled" value="true" />
		<setting name="useGeneratedKeys" value="true" />
		<setting name="defaultExecutorType" value="REUSE" />
		<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>

属性名:logImpl

描述:指定 MyBatis 所用日志的具体实现,未指定时将自动查找。

有效值:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING

默认值:Not set

方法二:在logback-spring.xml中添加如下配置(我用的是logback,如果用的是其他日志框架,则在其对应的配置文件中修改)

<logger name="com.solin.springmvc.mapper" level="DEBUG"></logger>

<think>嗯,用户想了解如何在MyBatis配置打印日志。首先,我需要回忆一下MyBatis支持的日志框架有哪些。常见的应该是SLF4J、Log4j、Log4j2、Logback这些。不同的日志实现配置方式可能不同,但MyBatis会自动检测,所以用户只需要引入对应的依赖,然后在配置文件中设置日志级别。 可能需要先告诉用户,MyBatis日志是通过设置日志实现来控制的。比如,在mybatis-config.xml里有个<settings>标签,里面可以配置<setting name="logImpl" value="LOG4J"/>,不过实际上现在更常见的是通过依赖自动检测,所以可能更简单的方法是引入对应的日志库,然后在应用的日志配置里调整级别。 比如,如果用户用Log4j2,需要在项目的pom.xml里加入Log4j2的依赖,然后创建一个log4j2.xml文件,设置org.apache.ibatis的日志级别为DEBUG。或者如果使用Spring Boot的话,可能是在application.properties里配置logging.level.mybatis的包路径为DEBUG。 不过用户可能不太清楚这些细节,所以需要分步骤说明,可能还要举几个例子,比如Log4j、Logback的不同配置方式。另外,可能需要提醒用户,打印SQL日志通常需要将mapper接口的命名空间的日志级别设为DEBUG,这样才能看到具体的SQL语句、参数和结果。 还要注意,有时候用户可能会遇到日志没有输出的情况,这时候要检查是否有多个日志框架冲突,或者配置是否正确。比如,如果同时引入了Logback和Log4j,但没有排除Spring Boot默认的日志框架,可能会导致配置不生效。 总结下来,步骤应该是:1. 确定使用的日志框架;2. 添加对应的依赖;3. 配置日志级别为DEBUG;4. 指定MyBatis日志实现(如果需要)。同时,给出具体的配置示例,比如Log4j2的配置文件,或者Spring Boot中的配置方式。可能还需要提到mybatis.configuration.log-impl属性的使用,特别是在Spring Boot中的配置方法。</think>在MyBatis配置SQL日志打印的步骤如下(以常见场景为例): 1. **选择日志框架** MyBatis支持SLF4J/Log4j2/Logback等主流日志框架,优先推荐使用Logback或Log4j2 2. **添加依赖**(以Logback为例,Maven配置) ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.4.14</version> </dependency> ``` 3. **配置日志级别** 在`logback.xml`中添加配置: ```xml <!-- 打印SQL语句、参数和结果 --> <logger name="org.mybatis" level="DEBUG"/> <!-- 显示JDBC底层操作 --> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> ``` 4. **MyBatis专属配置** 在`mybatis-config.xml`中显式指定日志实现: ```xml <configuration> <settings> <setting name="logImpl" value="SLF4J"/> </settings> </configuration> ``` **Spring Boot项目简化配置** 在`application.properties`中: ```properties # 显示SQL执行详情 mybatis.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl logging.level.org.mybatis=DEBUG logging.level.java.sql=TRACE ``` **日志输出示例** ```text DEBUG org.mybatis.example.BlogMapper.selectBlog - ==> Preparing: SELECT * FROM blog WHERE id = ? DEBUG org.mybatis.example.BlogMapper.selectBlog - ==> Parameters: 1(Integer) TRACE org.mybatis.example.BlogMapper.selectBlog - <== Columns: id, title, content TRACE org.mybatis.example.BlogMapper.selectBlog - <== Row: 1, Hello MyBatis, Welcome! ``` **常见问题排查** - 无日志输出:检查依赖冲突,使用`mvn dependency:tree`查看日志框架版本 - 显示?代替参数:检查是否开启参数打印(默认已开启) - 需要显示结果集详情:需启用TRACE级别日志 通过以上配置,可以清晰看到: 1. 预编译的SQL语句 2. 实际传入的参数值 3. 查询返回的结果集结构 4. 具体的返回数据行 建议生产环境关闭TRACE级别日志以避免性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值