一、myBatis
1.mybatis是基于ORM(对象、关系映射数据库)半自动轻量级框架。
优点:支持定制化sql,存储过程,高级映射,帮我们省略了所有的JDBC操作以及手动设置参数和结果集,支持XML和注解两种配置模式。
2.mybatis缓存
1.一级缓存:sqlsession级别 HasMap结构存储缓存数据 不同sqlsession之间缓存数据区域互不影响。
2.二级缓存:mapper级别,多个sqlsession去操作同一个mapper的sql语句,sqlsession可以共用二级缓存,二级缓存是跨sqlsession的。
PS:mybatis默认开启一级缓存
3.mybatis架构设计
1.mybatis架构分为三层:
1.API接口层:提供给外部使用的接口API ,主要用来与数据库交互。
a.传统mybatisAPI 接口;
b.使用Mapper代理方式;
2.数据处理层:负责 SQL 查找,SQL解析 SQL 执行,执行结果映射等
3.基础支撑层:负责基础功能支撑,连接管理。事务管理,配置加载 和缓存管理。
2.主要构件
a.sqlsession:Mybatis顶层API接口 与数据库进行交互操作
b.Executor:Mybatis执行器,Mybatis调度的核心,负责SQL语句生成和查询缓存与维护。
c.StatementHandler:封装了JDBC Statement操作,设置参数,结果集转成List集合。
d.ParameterHandler:负责对用户传递的参数转换成JDBC Statement所需参数。
c.ParameterHandler:负责将JDBC返回的结果集对象转成List类型集合。
e.TypeHandler:负责JAVA数据类型和JDBC数据类型之间的映射和转换。
f.MappedStatement:CRUD节点封装
g.SqlSource:根据用户传递的参数动态生成SQL语句,将信息封装到Boundsql对象,并返回。
h.BoundSql:动态生成的sql语句以及响应的参数信息
3.总体流程(执行原理)
1.加载配置文件并初始化: XML文件与注解
2.接收调用请求:调用mybatis API接口 为sql的id传入参数对象。
3.处理过程:将请求传递给下层的请求处理层进行处理。
4.处理操作请求:a.根据sqlId找到对应MapperStatsment对象
b.根据传入参数对象解析MapperStatsment对象 得到要执行的sql与传入参数。
c.获取数据库连接,根据最终的sql语句和执行传入参数到数据库执行,得到执行结果。
d.根据mapperstatement对象中结果映射配置对象结果进行转换处理,得到最终结果。
5.释放连接资源