MyBatis整合Spring的实现(1)

目的java

    MyBatis是一个基于Java的持久层框架。也是不少程序员的最爱,由于本身控制的SQL时,写出一个好的SQL会大大的提升总体程序的性能。目前的项目通常都是MyBatis和Spring的整合,那么具体的逻辑是什么样子呢?下面就来分析一下具体的代码及逻辑。程序员

分析spring

1 Spring的XML配置(样例):sql

对于上面XML的配置信息,也就是Spring对一个类进行了实例化。那咱们就来看看SqlSeesionFactoryBean类到底作了什么操做呢?
数据库

2 SqlSeesionFactoryBean属性:mybatis

  /** 日志类 */
  private final Log logger = LogFactory.getLog(getClass());
  /** mybatis的全局配置信息 */
  private Resource configLocation;
  /** mybatis的SQL文件信息 */
  private Resource[] mapperLocations;
  /** 数据源 */
  private DataSource dataSource;
  /** 事务工厂 */
  private TransactionFactory transactionFactory;
  /** spring配置文件中mybatis的属性 */
  private Properties configurationProperties;
  /** SqlSessionFactoryBuilder  */
  private SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  /** mybatis的SqlSessionFactory工厂  */
  private SqlSessionFactory sqlSessionFactory;
  private String environment = SqlSessionFactoryBean.class.getSimpleName();
  private boolean failFast;
  /** spring配置文件中mybatis的拦截器 */
  private Interceptor[] plugins;
  /** spring配置文件中mybatis的自定义类型集合 */
  private TypeHandler<?>[] typeHandlers;
  /** spring配置文件中mybatis的自定义类型包 */
  private String typeHandlersPackage;
  /** spring配置文件中mybatis的别名集合 */
  private Class<?>[] typeAliases;
  /** spring配置文件中mybatis的别名包 */
  private String typeAliasesPackage;
  /** 数据库产品名 */
  private DatabaseIdProvider databaseIdProvider = new DefaultDatabaseIdProvider();

3 实现接口InitializingBean:app

图中因为 实现了InitializingBean类,也就是须要执行初始化代码。框架

这里数据源与SqlSessionFactoryBuilder不能为空,而后去构建SqlSessionFactory 。
ide

4 代码实现:性能

4.1 生成一个MyBatis的全局对象Configuration(全局配置类)。


4.2 读取typeAliasesPackage属性并解析,放入Configuration(全局配置类)中,对应TypeAliasRegistry

4.3 读取typeAliases属性并解析,放入Configuration(全局配置类)中,对应TypeAliasRegistry类

4.4 读取plugins属性并解析,放入Configuration(全局配置类)中,对应InterceptorChain类。

4.5 读取typeHandlersPackage属性并解析,放入Configuration(全局配置类)中,对应TypeHandlerRegistry类。

4.6 读取typeHandlers属性并解析,放入Configuration(全局配置类)中,对应TypeHandlerRegistry类。

4.7 解析MyBatis的全局配置文件,放入Configuration(全局配置类),建立Spring事务。

4.8 从新生成环境信息,设置数据库产品名称。

4.9 解析MyBatis的SQL文件,放入Configuration(全局配置类)

10:最后生成一个SqlSessionFactory对象。

总结:

注意必定要区分,何时读取Spring配置文件,何时读取MyBatis配置文件。

具体MyBatis的操做只能一步一步的去研究。

相关文章
相关标签/搜索