共计 820 个字符,预计需要花费 3 分钟才能阅读完成。
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 的优良之处,真正做到了 业务与技术拆散。
正文完