没想到,MyBatis 背后居然用了这么多设计模式

你在用的 MyBatis 至少有 9 种设计模式:

1、Builder 模式

例如:SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;

2、工厂模式

例如:SqlSessionFactory、ObjectFactory、MapperProxyFactory;

3、单例模式

例如:ErrorContext和LogFactory;

4、代理模式,也是 MyBatis 实现的核心

例如:MapperProxy、ConnectionLogger,用到 JDK 的动态代理;还有 executor.loader 包使用了 CGLIB 或者 Javassist 达到延迟加载的效果;

5、组合模式

例如:SqlNode 和各个子类 ChooseSqlNode 等;

6、模板方法模式

例如:BaseExecutor 和 SimpleExecutor,还有 BaseTypeHandler 和所有的子类。比如,IntegerTypeHandler;

7、适配器模式

例如:Log 的 MyBatis 接口和它对 JDBC、log4j 等各种日志框架的适配实现;

8、装饰者模式

例如:Cache 包中的 cache.decorators 子包中等各个装饰者的实现;

9、迭代器模式

例如:迭代器模式 PropertyTokenizer;

不急,冷静!还有几个常问的面试坑,你也不知道?

1. MyBatis 是如何进行分页的?分页插件的原理是什么?

2. 简述 MyBatis 的插件运行原理,以及如何编写一个插件?

3. MyBatis 执行批量插入,能返回数据库主键列表吗?

4. MyBatis 动态 SQL 是做什么的?都有哪些动态 SQL?能简述一下动态 SQL 的执行原理不?

5. MyBatis 是如何将 SQL 执行结果封装为目标对象并返回的?都有哪些映射形式?

6. MyBatis 动态代理机制应用在框架的哪些部分?

......

免费领解决方案 & MyBatis 干货视频

很多人觉得 MyBatis 难学,但其实大部分技术学习的困难点不在于技术本身。而在于,如何把学习到的技术,更好的在实际项目中,使用它解决各种疑难杂症。

让 前阿里巴巴资深架构师、前阿吉豆(AJIDOU)IT 副总裁肖秋平老师 带你搞懂 MyBatis 框架核心源码设计,学习优雅、高效的代码编写经验,还有更多超一线研发真正在项目落地的技术,让你的技术应用更加自如,更让有大厂面试需求的小伙伴,妥妥的在面试中应对面试官的灵魂拷问!

539 个技术分支的 Java 技术大纲,免费领!!

涵盖一线 Java 研发岗最核心的技术!非常齐全!

扫码,领取高清无码版大纲

还可领公开课录播、训练营视频等

【奈学教育】持续输出系列直播公开课

每周都等你来听噢!!

Java 技术专家们会结合当下企业中的真实案例进行分享:企业级实战案例深度剖析、分布式架构设计与实践、微服务架构架构与实践、业务中台设计与实践等干货知识,还可以拿到各种 Java 技术视频和资料。

点击阅读原文领取技术干货讲解视频!!!

你可能感兴趣的:(没想到,MyBatis 背后居然用了这么多设计模式)