1. 安装MyBatis 源码包

MyBatis 源码下载地址:https://github.com/mybatis/mybatis-3

MyBatis源码导入过程:
下载MyBatis的源码
检查maven的版本,必须是3.25以上,建议使用maven的最新版本
mybatis的工程是maven工程,在开发工具中导入,工程必须使用jdk1.8以上版本;
把mybatis源码的pom文件中true,全部改为false;
在工程目录下执行 mvn clean install -Dmaven.test.skip=true,将当前工程安装到本地仓库(pdf插件报错的话,需要将这个插件屏蔽);
其他工程依赖此工程

2.mybatis整体架构

MyBatis高级

3.谈谈设计模式的几个原则

单一职责原则:一个类或者一个接口只负责唯一项职责,尽量设计出功能单一的接口;

依赖倒转原则:高层模块不应该依赖低层模块具体实现,解耦高层与低层。既面向接口编程,当实现发生变化时,只需提供新的实现类,不需要修改高层模块代码;

开放-封闭原则:程序对外扩展开放,对修改关闭;换句话说,当需求发生变化时,我们可以通过添加新模块来满足新需求,而不是通过修改原来的实现代码来满足新需求;

4.基础支撑层源码分析 日志模块需求

MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,二MyBatis统一提供了trace、debug、warn、error四个级别;
自动扫描日志实现,并且第三方日志插件加载优先级如下:slf4J → commonsLoging → Log4J2 → Log4J → JdkLog;
日志的使用要优雅的嵌入到主体功能中;

适配器模式:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作;

Target:目标角色,期待得到的接口.
Adaptee:适配者角色,被适配的接口.
Adapter:适配器角色,将源接口转换成目标接口.

适用场景:当调用双方都不太容易修改的时候,为了复用现有组件可以使用适配器模式;在系统中接入第三方组件的时候经常被使用到;
注意:如果系统中存在过多的适配器,会增加系统的复杂性,设计人员应考虑对系统进行重构;

5.代理模式那些事

定义:给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用;
目的:(1)通过引入代理对象的方式来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性; (2)通过代理对象对原有的业务增强;
MyBatis高级

6.工厂模式

工厂模式(Factory Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行

工厂接口(Factory):工厂接口是工厂方法模式的核心接口,调用者会直接和工厂接口交互用于获取具体的产品实现类;
具体工厂类(ConcreteFactory):是工厂接口的实现类,用于实例化产品对象,不同的具体工厂类会根据需求实例化不同的产品实现类;

产品接口(Product):产品接口用于定义产品类的功能,具体工厂类产生的所有产品都必须实现这个接口。调用者与产品接口直接交互,这是调用者最关心的接口;

具体产品类(ConcreteProduct):实现产品接口的实现类,具体产品类中定义了具体的业务逻辑

MyBatis高级

特点: 产品实例化的过程, 和使用的过程分开
   每个厂商只生产指定的一个产品 单一原则
   开闭原则, 加个工厂类, 价格产品类 即可

1.   有抽象的工厂接口, 所有的工厂都要集成这个接口
2.   产品也会有一个抽象接口,所有哦的产品类豆会继承这个接口
3.   不同的厂商生产部同的产品

MyBatis高级

1.  从数据库连接池获取连接过程
PoolState:用于管理PooledConnection对象状态的组件,通过两个list分别 管理空闲状态的连接资源和活跃状态的连接资源

MyBatis高级

PooledDataSource:一个简单,同步的、线程安全的数据库连接池
MyBatis高级

PooledConnection:使用动态代理封装了真正的数据库连接对象;
MyBatis高级
MyBatis高级
MyBatis高级
MyBatis高级

回收资源
MyBatis高级
MyBatis高级

相关文章: