mybatis详解
一、mybatis 核心概念
MyBatis是一个持久层的(Object-Relational Mapping)框架,即对象关系映射框架。使用简单,学习成本较低。可以执行自己手写的SQL语句,比较灵活。但是MyBatis的自动化程度不高,移植性也不高,有时从一个数据库迁移到另外一个数据库的时候需要自己修改配置,所以称只为半自动ORM框架
- 核心类介绍
Configuration、SqlSessionFactory、Session、Executor、MappedStatement、StatementHandler、
ResultSetHandler
名称 | 意义 |
---|---|
Configuration | 管理 mysql-config.xml 全局配置关系类 |
SqlSessionFactory | Session 管理工厂接口 |
Session | SqlSession 是一个面向用户(程序员)的接口。SqlSession 中提供了很多操作数据库的方法 |
Executor | 执行器是一个接口(基本执行器、缓存执行器)。作用:SqlSession 内部通过执行器操作数据库 |
MappedStatement | 底层封装对象。作用:对操作数据库存储封装,包括 sql 语句、输入输出参数 |
StatementHandler | 具体操作数据库相关的 handler 接口 |
ResultSetHandler | 具体操作数据库返回结果的 handler 接口 |
二、流程
- mybatis处理流程
- 执行流程
上面解析流程结束后会生成一个Configration对象,包含所有配置信息,然后会创建一个SqlSessionFactory对象,这个对象包含了Configration对象。 - 总结
对于MyBatis启动的流程(获取SqlSession的过程)这边简单总结下:
SqlSessionFactoryBuilder解析配置文件,包括属性配置、别名配置、拦截器配置、环境(数据源和事务管理器)、Mapper配置等;解析完这些配置后会生成一个Configration对象,这个对象中包含了MyBatis需要的所有配置,然后会用这个Configration对象创建一个SqlSessionFactory对象,这个对象中包含了Configration对象;