聊聊mybatis的架构
聊聊mybatis的架构模块
mybatis相信大家都用过,入门级的连接数据库并操作的就是jdbc,通过官方的介绍,我们知道mybatis有三层架构:基础支撑层,核心处理层和接口层,接口层就是mybatis对外开放的一些接口,比如SQLSession,SQLSessionFactory等接口,下面我介绍一下mybatis的基础层和核心处理层包含的东西。
基础层
基础层显然就是提供一下基础功能的模块
类型转换模块
类型转换模块,它的功能主要是实现jdbc类型和java类型的互相转换,例如我们通过在调用sql语句的时候需要通过用户传入的参数类进行运行sql,这时候通过mybatis的类型转换模块,而结果集的返回映射到java对象中也需要类型转换,另外mybatis的别名机制也是类型转换模块的内容
数据源模块
数据源模块顾名思义就是对数据源的支持,mybatis开发数据源模块能更方便的切换数据源。
binding模块
binding模块也是mybatis的重点模块,我们mapper接口和xml的匹配就是通过binding模块生成mapper接口的动态代理对象来完成的
缓存模块
还有就是缓存模块,大家都知道mybatis有一级缓存和二级缓存,一级缓存是基于sqlsession的缓存,二级缓存是mapper级别的缓存,可以通过cache标签来开启,mybatis的二级缓存可能出现脏读问题,所以不建议使用,一般我们用redis来进行缓存
反射工具模块
还有反射工具模块,mybatis有自己的反射工具,它是基于java的反射来进行封装的
解析器模块
解析器模块顾名思义就是解析文件的,mybatis中的xml文件都是通过解析器模块来进行解析的,比如mybatis-config.xml和Mapper接口对应的xml文件
日志模块
mybatis也有自己的日志模块,日志的重要性不言而喻了,生产的问题的定位都是通过日志来进行定位的
事务管理模块
大家可能不知道,mybatis也有自己的事务管理的模块,而我们一般使用spring的事务
核心处理层
核心处理层就尤为重要了,核心处理器的插件模块就不多介绍了,它主要是让用户自定义一些插件,重点介绍一下配置解析模块和sql解析和scripting模块。
配置解析模块
配置解析模块就是用来解析配置文件的,xml配置文件会通过配置解析生成配置对象保存在Configuration中,通过Configuration可以创建SqlSessionFactory,然后创建SqlSession。
sql解析和scripting模块
大家都知道,mybatis支持动态sql的拼接,这也得益于mybatis的sql解析和scripting模块,这个模块解析动态sql的标签,然后处理sql中的占位符,进入参数填充,从而形成真正的sql,sql语句都形成了。
接下来就是sql的执行了,在mybatis中sql的执行先是SqlSession到Executor组件,Executor调用事务管理模块进行事务的管理,然后使用缓存模块进行一二级缓存的管理,进入Executor模块后就是StatementHandler模块,StatementHandler先调用ParameterHandler进行实参的绑定,然后通过Statement对sql语句在数据库中运行,返回结果到ResultSet,ResultSet再到ResultSetHandler,ResultSetHandler进行结果映射到Java对象中,返回结果。
总结
这篇文章我们介绍了Mybatis的整体架构模块,以及各个模块的功能作用,接下来的文章我们将会基于源码的角度详细介绍Mybatis的各个模块
- 点赞
- 收藏
- 关注作者
评论(0)