手写Mybatis,彻底搞懂框架原理

  

mybatis的前身是iBatis,其源于“互联网”和“有刺铁丝网”的组合,是一款优秀的持久层框架,它支持定制化SQL,存储过程以及高级映射.mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,它可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO映射成数据库中的记录。
手写mybatis,彻底搞懂框架原理

  

<强> Mybatis的架构设计

手写Mybatis,彻底搞懂框架原理”> <br/> Mybatis的功能架构分为三层:</p>
  <ul>
  <李>接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层接收到调用请求就会调用数据处理层来完成具体的数据处理。</李>
  <李>数据处理层:负责具体的SQL查找,SQL解析,SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。</李>
  <李>框架支撑层:负责最基础的功能支撑,包括连接管理、事务管理,配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。</李>
  <李>
  <p> <强> mybatis的运行流程<br/> </强> <br/> <img src=

  
  

考虑到事务对理解框架原理产生干扰,所以代码全部删掉

  

<强> mybatis目录结构及内容
以下目录对照的是mybatis-3.5.1的源码。

  
      <李>   李   <李>注释。注解目录。包括所有的注解,如@SELECT, @UPDATE等。   <李> binding.Mapper类的实例反射生成工具目录。   <李>建设者。主要是注解,mapper和SqlSource的构造器及转换器。   <李> cache.Mybatis内部缓存接口。实现了一些特定的缓存策略,FifoCache, LruCache, BlockingCache, LoggingCache等。   <李>数据源。数据源工厂类及实现。实现类包括JndiDataSourceFactory, PooledDataSourceFactory和UnpooledDataSourceFactory。数据源实现类:UnpooledDataSource和PooledDataSource。   <李> exceptions.Mybatis自定义的异常类,都继承自RuntimeException。   <李>执行人。执行器相关包。包括关键生成器,加载器(包括Cglib, Javassist的代理,结果加载器),参数处理器接口,结果处理器,结果集(resultSet)处理器,声明处理器(实现类:BaseStatementHandler, CallableStatementHandler, PreparedStatementHandler, RoutingStatementHandler, SimpleStatementHandler),执行器(SimpleExecutor、ReuseExecutor CachingExecutor, BatchExecutor, BaseExecutor)。   <李> io。主要是定义的几个VFS (VFS, DefaultVFS ClassLoaderWrapper)。   <李> jdbc。与Sql相关的操作。如Sql运行器,脚本运行器和Sql封装类等。   <李>日志。各个类型的日志适配器,都实现了日志接口.StdOutImpl, Slf4jImpl, NoLoggingImpl, Log4j2Impl, Log4jImpl, Jdk14LoggingImpl, BaseJdbcLogger和JakartaCommonsLoggingImpl。   <李>映射。主要是接口参数,sql和返回结果的映射类,主要类包括:MappedStatement, ParameterMap, ParameterMapping, ResultMap, ResultMapping, BoundSql和SqlSource等类。

    手写Mybatis,彻底搞懂框架原理