MyBatis
作为一个风行的半自动ORM框架,外面交融了许多优良的设计理念,剖析其源码骨架可能帮你建设良好的我的项目设计教训。因为其比较复杂,我会分成几篇来讲,一起踏上驯服的旅程吧!

首先把MyBatis源码包导入到idea,再新建一个我的项目依赖本地包,这样咱们就能够进行调试调用了。

因为MyBatis不同于Tomcat,它依赖于内部调用能力启动.

MyBatis的根底撑持层基于iBatis,它在iBatis的根底上减少了外观模式,不便编码人员更直观的应用。

因而,咱们看一下它的外围包:

优良的中央在于,每个模块之间的耦合度较低,一个包就是一个独自的模块。所以咱们在剖析单个模块的时候,相干类都会在同一个包中,是不是很不便。

日志模块

MyBatis没有提供日志的实现类,仅仅提供了一个Log接口,规定了trace、debug、warn、error四个级别:

public interface Log {  boolean isDebugEnabled();  boolean isTraceEnabled();  void error(String s, Throwable e);  void error(String s);  void debug(String s);  void trace(String s);  void warn(String s);}

此处咱们以log4j来看,MyBatis是怎么集成日志插件的:

咱们关上这个Log4jImpl,看看它是怎么把日志插件集成进来的:

首先,它实现了Log接口,而后将Log的相干解决转交给Logger对象(log4j中理论的打印类)来解决,典型的适配器模式。其余的日志插件也是如此,能够看一下Log模块的类图:

这是一个工厂模式,通过它的工厂代码咱们就能够看到日志插件的加载程序:

当执行数据库操作的时候,就会打印出相应的日志:

那么问题来了,咱们在代码中并没有写打印语句呀,它是在哪里调用的呢?

这就是MyBatis的优良之处,真正做到了业务与技术拆散