日志
适配器模式
Mybatis自己有一套统一的日志接口供上层使用,使用适配器模式为常用日志框架提供了适配器
LogFactory
负责创建对应日志组件的适配器,其静态块初始化加载会按顺序加载各日志组件的适配器,并使用第一个加载到的日志组件适配器,保存到logConstructor
这个静态字段里
JDBC调试日志
BaseJdbcLogger
记录了绑定SQL参数相关的set方法以及执行SQL语句相关的方法名称
ConnectionLogger
封装了Connection
对象同时实现了InvocationHandler
对象,其newInstance()
方法会为其封装了Connection
对象创建代理对象。其invoke()
方法为prepareStatement(),prepaerCall(),createStatement()
等方法提供了代理,具体是调用这些方法时会创建相应的Statement对象及代理对象并返回代理。
PreparedStatementLogger,StatementLogger,ResultSetLogger
的newInstance()
方法都类似,他们的invoke()
方法会对其相应的方法添加日志打印的功能