MyBatis架构解析

一、整体架构
1、接口层:SqlSession
2、核心处理层:1)配置解析;2)参数映射;3)SQL解析;4)SQL执行;5)结果集映射;6)插件
3、基础支持层:1)数据源模块;2)事务管理模块;3)缓存模块;4)Binding模块;5)反射模块)

二、工作流程

                                                              三、各模块内容简介
1)SqlSession:通过该对象执行映射配置文件中定义的SQL语句,完成相应的数据操作。
2)配置解析:使用解析器模块对配置文件进行解析,注册
3)参数映射:JAVA—->JDBC
4)SQL解析:根据sql节点获得SQL代码片段,并根据id字段与mapper中方法进行绑定,映射参数列表和结果集对象,将这一切完成后,生成代理
5)SQL执行:上一步生成的代理进行sql代码的执行
6)结果集映射:JDBC—->JAVA
7)插件:采用责任链模式,通过继承Interceptor接口,自定义拦截器对SQL语句执行过程中的某一点进行拦截。需配合使用@Intercepts和@Signature注解。可用于分页插件、分表插件等
8)数据源模块:工程方法模式,MyBatis提供了两个数据源实现类PooledDataSource和UnpooledDataSource。
9)事务管理模块:mybatis提供了两个实现JdbcTransaction和ManagedTransaction。前者依赖于JDBC Connection控制事务的提交和回滚,后者依靠容器管理,例如spring。
10)缓存模块:使用装饰器模式,一级缓存:会话级别缓存,每一个SqlSession对象一个会话;二级缓存:应用级别的缓存,所有SqlSession共用
11)Binding模块:编译时,通过MapperRegistry对mapper.java和mapper.xml进行注册绑定、检查。可在编译时发现绑定错误,且提供更加面向对象的方式使用mybatis
12)反射模块:简化反射操作相关代码,并进行元数据类型预加载来提升性能
13)类型转换:Java类型与JDBC类型之间的转换
14)日志模块:采用适配器模式和JDK动态代理实现
15)资源加载:JDK类加载器,单例模式
16)解析器模块:采用DOM解析方式结合XPath解析,使用建造者模式
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值