Mybatis 实现打印sql语句的代码
mybatis本身没有提供日志的实现,引入的是第三方组件。分析工程类,可以发现mybatis如何来选择log关于logConstructor的加载如下在 tryImplementation ,中会设置mybatis使用的log类型。所以在mybatis中优先级由低到高为slf4J、commonsLoging、Log4J2、Log4J和JdkLog。故此,mybatis为了解决这一问题,使用了适配器模式。适配器的实现一般是让适配器实现或者继承目标,并且内部持有一个适配者的引用。mybatis 又是如何把这log,用起来的。举例查询的语句查看,根据MapperProxy,查到最后查询的语句到此处可以看到mybatis在获取连接的时候,会根据日志的打印级别来判断是否会创建一个代理类。代理类又一次被代理,这也是mybatis喜欢的编程方式,比如插件也是代理类再次被代理,来实现多个插件并行。