关于mybatis:MyBatis源码解析一

46次阅读

共计 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 的优良之处,真正做到了 业务与技术拆散

正文完
 0