一、Mybatis的介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、代码解析
主要的4个功能
1、将路径下的资源读取到流中
通过getResourceAsStream 读取资源文件 ,在读取的过程中 调用 classLoaderWrapper中的方法,然后通过对classLoader[]数组的遍历 ,然后进行判断 类加载器中所读的流是否为null,如果不为null 则返回InputStream对象
注解:getResourceAsStream方法的用法理解 :http://t.csdn.cn/lRAdu
重点!,获取核心对象的方式
SqlSessionFactoryBuilder构建 SqlsessionFactory实例,通过build()方法解析mybatis-config.xml文件,解析到的文件内容套接到Configuration中,而这个configuration 相当于 mybatis-config.xml 中的类然(如图)的配置文件每一个详细信息所对应后。返回给SqlsessionFactory对象。
Configuration
获取SQLsession对象
作用:它是一个面向程序员的接口,程序员通过该接口可以对数据库进行增删改查方法,该接口有一个默认的实现:DefaultSqlSession o
通过DefaultSqlSessionFactory对象调用它里面opensession方法返回DefaultSQLSession对象
调用的是DefaultSqlSessionFactory类中opensessionFromDataSource
opensessionFromDataSource方法
该方法下有三个参数 第一个的类型 第二个 事务的隔离级别 第三个 是否自动提交
通过sqlsession获取相应Mapper
第一层通过调用sqlsession中getMapper方法
第二层通过调用配置中的getMapper方法
第三层通过映射的注册器中的getMapper方法来进行获取相应的Mapper对象
其中使用了MapperProxyFactory 工厂对象来获取 MapperProxy 在里面使用反射和动态代理的方式来获取最终的mapper对象。
————————————————