SpringBoot我一般使用Mybatis(Mybatis-plus)做持久层架构,在配置文件application.yml中一般配置如下(有其他需求自己添加):
# mybatis
mybatis-plus:
type-aliases-package: com.test.common.entity
# 指定mybatis映射文件的位置
mapper-locations: classpath:mapper/*.xml
configuration:
# 开启驼峰命名转换(开启后需要注意字段写法,不然返回值为null)
map-underscore-to-camel-case: true
# 配置mybatis日志输出sql
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: AUTO
上面的配置,因添加了log-impl: org.apache.ibatis.logging.stdout.StdOutImpl,所以我们在控制台可以看到输出的sql以及查询结果,内容丰富,个人感觉还是很OK的。但是日志文件中并不会有sql输出。
log-impl,看名字就知道是配置的一个log的实现类,我们查看这个类的源码

可以看出,都是用System输出的,所以只会在控制台输出,不会在日志中输出了。
我们可以替换这个log实现类,来实目前日志中输出sql的目的。
1. 在控制台输出sql文件
一般就添加配置:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl,这个输出sql还有sql的结果,我一般都用这个。
2. 在sql文件和控制台中输出sql
就是替换log的实现类。mybatis自带的有许多,有兴趣可以自己看一下。这里我们替换成org.apache.ibatis.logging.slf4j.Slf4jImpl。
查看这个类的源码,发现和原来那个还略有不同。
- 打印用log来打印了,不用
System了 - 有2个方法返回值不是默认了,如下图对比


所以修改完
Log实现类后来还需要在配置文件中配置log的等级为debug
# mybatis
mybatis-plus:
type-aliases-package: com.test.common.entity
# 指定mybatis映射文件的位置
mapper-locations: classpath:mapper/*.xml
configuration:
# 开启驼峰命名转换(开启后需要注意字段写法,不然返回值为null)
map-underscore-to-camel-case: true
# 替换log实现类
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config:
db-config:
id-type: AUTO
# 设置log等级,可以按包或者类来设定,我一般直接把dao层设为debug
logging:
level:
[com.test1.dao] : debug
[com.test2.dao] : debug
这样就可以在日志文件和控制台中都输出sql了,但是就没有sql的详细结果了,也够用
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...

