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