Mybatis——前言

什么是 MyBatis?

引用Mybatis网站上的一句话

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

如果说你对MyBatis基础的配置和定义完全不懂,那么可以点击这里进行学习。

框架是什么?框架的作用是什么?

我的理解是:框架是对底层代码的封装,更方便的让程序员去开发使用,Java中的持久层框架,都是对JDBC进行的封装。

Mybatis架构原理

我们来看一张图
Mybatis架构图

接口层

接口层就是Mybatis提供给我们对数据库进行CRUD的一套API,通过SqlSession接口和Mapper映射文件,Mybatis就知道要执行哪一条SQL命令和需要的参数是什么。

public void save(){
	InputStream in = Resources.getResourceAsStream("myBatis-config.xml");
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
	session = factory.openSession();
	//insert就是Mybatis提供给我们执行插入的方法
	session.insert("save.test",1);
}

数据处理层

数据处理层是Mybatis内部来实现,完成对映射文件的解析和处理。

支撑层

支撑层主要是完成Mybatis与数据库的连接管理以及SQL命令与配置文件的对应,主要负责:

  1. Mybatis与数据库连接方式管理
  2. Mybatis对事物管理方式
  3. 配置文件加载
  4. Mybatis查询缓存管理

Mybatis架构流程以及层次结构

架构流程

Mybatis层次结构

SqlSession

接收开发人员提供的StatementId和参数,并返回操作结果

Executor

执行器,是Mybatis调度的核心,负责SQL语句的生成和查询缓存的维护

StatementHandler

封装了JDBC Statement操作,负责对JDBC Statement的操作,如设置参数

ParameterHandler

负责对用户传递的参数转换成JDBC Statement所需要的参数

ResultSetHandler

负责将JDBC返回的ResultSet结果集对象转换成List类型的集合

TypeHandler

负责java数据类型和JDBC数据类型之间的映射和转换

MappedStatement

维护了select、update、delete、insert节点的封装

SqlSource

负责根据用户传递的parameterObject,动态的生成SQL语句,将信息封装到BoundSql对象中,并返回生成的SQL语句以及相应的参数信息

Configuration

MyBatis所有的配置信息都维护在Configuration对象中

结语

好了,Mybatis就简单说到这里,下一篇就开始进行手写Mybatis,为了方便理解,我会从简易版一点一点升级,最后到源码篇。
文章如果误,请大佬们批评指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值