mybatis源码分析一(ORM的思考)

一:ORM框架的思考

1:ORM框架

JDBC连接数据库:
加载JDBC驱动程序
创建数据库连接
创建Statement
执行SQL
遍历封装结果集
处理异常,关闭资源
JDBC连接数据存在哪些问题:
API繁琐,用户需频繁操作JDBC API
sql代码沾染业务代码,耦合深,且不复用
数据类型手动转换
……
ORM:
关系和对象之间的映射
ORM解决什么问题:
ORM帮用户解决像操作对象一样操作数据库层
通用api覆盖,sql代码业务代码分离
数据类型自动转换
……

2:如何简单设计ORM

先花时间思考如何设计ORM,哪些是抽象扩展点,哪些应是具体实现

image.png

那么mybatis做了件什么事情:对外提供接口,屏蔽底层复杂的细节

image.png

配置文件是xml还是properties文件或者?解析方式?
mapper映射源可以是注解?xml?或者json?解析方式?
mapper.xml如何映射接口?
接口参数如何映射sql?
sql执行器Bean设计?
mybatis用了哪些设计模式?为什么用这些设计模式?
......

二:如何看mybatis源码

1:mybatis官网

[https://mybatis.org/mybatis-3/zh/index.html](官网链接)

2:构件简单mybatis maven项目

导入mybatis、mysql jar
<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.5.4</version>
</dependency>
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.42</version>
</dependency>
查看mybatis有哪些重要的模块,大概了解mybatis的功能,mybatis类命名较为规范,基本上看类名就知道类的作用

image.png

annotations 注解
binding 一些反射工具类
builder 构建重要对象的包
cache 缓存包
datasource 封装的数据源工厂和数据源
executor sql执行器
io io操作
javassist 一些java助手
logging 日志
mapping 映射
parsing 解析配置文件
session 会话
transaction 事务
阅读 64

推荐阅读