MyBatis日志
这节使用新项目 MyBatis-04(同 MyBatis-03 ),研究一下 MyBatis 日志的配置使用。
1. 日志工厂
以前直接使用 JDBC 时,如果一个数据库操作出现了问题,一般只能使用 sout 和 debug 来发现问题;现在 MyBatis 日志就是最好的帮手!
要在 MyBatis 中使用日志,需要在 mybatis-config.xml 中进行配置
设置名 | 描述 | 有效值 | 默认 |
---|---|---|---|
logImpl | 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | 未设置 |
其中,有几个比较重要的日志格式
- STDOUT_LOGGING:标准日志
- LOG4J:即 Java 日志( Log for Java),下面要用到的日志格式
- LOG4J2:即 LOG4J 的升级版
- SLF4J:即简单日志门面( Simple Logging Facade for Java ),不是具体的日志解决方案,它只服务于各种各样的日志系统,以后会了解
此处先使用标准日志了解一下日志的作用,在 mybatis-config.xml 中配置
<settings>
<!--标准的日志工厂实现-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
注意:这里的配置要完全遵守格式,大小写不能错,也不能多加空格,否则会报错!
配置完日志后再运行根据 ID 查询的 Test 方法,控制台输出的日志内容为
// 日志初始化 加载 StdOutImpl 适配器
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
// ...
// 打开 JDBC 连接 说明 MyBatis 的本质还是 JDBC 只不过封装起来了
Opening JDBC Connection
Loading class `com.mysql.jdbc.Driver'. // ...
// 获取了一个连接!
Created connection 1263668904.
// 设置事务开启
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4b520ea8]
// 执行的 SQL 语句 看的很清楚!
==> Preparing: select * from mybatis.user where id = ?
// 参数
==> Parameters: 1(Integer)
// 执行结果 列名 行 总数
<== Columns: id, name, pwd
<== Row: 1, 祈鸢, 123456
<== Total: 1
// 测试的输出
User{id=1, name='祈鸢', password='123456'}
// 关闭事务
Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4b520ea8]
// 关闭 JDBC 连接
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4b520ea8]
// 将获取的连接返回到 连接池 pool 中! 此处可以帮助理解连接池
Returned connection 1263668904 to pool.
从这里例子就可以看出日志的强大了,底裤都看穿了