`
gaojingsong
  • 浏览: 1201805 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Mybatis源码解读之Configuration 】

阅读更多

一、构建SqlSessionFactory 

public SqlSessionFactory build(InputStream inputStream, String environment, Properties props) {

    try {

      XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, props);

      Configuration config = parser.parse();

      return build(config);

    } catch (Exception e) {

      throw ExceptionFactory.wrapException("Error building SqlSession.", e);

    } finally {

      ErrorContext.instance().reset();

      try {

        inputStream.close();

      } catch (IOException e) {

        // Intentionally ignore.  Prefer previous error.

      }

    }

  }

 

XMLConfigBuilder是抽象类public abstract class BaseBuilder的实现类,抽象类和接口有啥区别呢?



 

二、Configuration里面有啥呢?

  public Configuration() {

    //支持的数据库连接之多JDBC、MANAGED、JNDI、POOLED、UNPOOLED

    typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class.getName());

    typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class.getName());

    typeAliasRegistry.registerAlias("JNDI", JndiDataSourceFactory.class.getName());

    typeAliasRegistry.registerAlias("POOLED", PooledDataSourceFactory.class.getName());

    typeAliasRegistry.registerAlias("UNPOOLED", UnpooledDataSourceFactory.class.getName());

    备注:

  JdbcTransactionFactory和ManagedTransactionFactory师出同门,都是TransactionFactory接口实现类。

JndiDataSourceFactory、PooledDataSourceFactory、UnpooledDataSourceFactory的继承关系如下图:
DataSourceFactory

     -->JndiDataSourceFactory

     -->UnpooledDataSourceFactory

                  -->PooledDataSourceFactory

                  -->UserDefineDataSourceFactory(这个是我自己定义的数据源)
    //Cache缓存也支持PERPETUAL、FIFO、LRU、SOFT、WEAK五种,都是Cache接口的实现类,你也可以自己定义缓存接口

    typeAliasRegistry.registerAlias("PERPETUAL", PerpetualCache.class.getName());

    typeAliasRegistry.registerAlias("FIFO", FifoCache.class.getName());

    typeAliasRegistry.registerAlias("LRU", LruCache.class.getName());

    typeAliasRegistry.registerAlias("SOFT", SoftCache.class.getName());

    typeAliasRegistry.registerAlias("WEAK", WeakCache.class.getName());

  }

 

DataSourceFactory接口

 

 TransactionFactory接口

 

自定义的数据源连接池是这个样子的

为了使用Druid,把Druid加入Mybatis之中

 

 

Cache接口的定义如下:



 

 

  • 大小: 47.5 KB
  • 大小: 17.7 KB
  • 大小: 18.1 KB
  • 大小: 39.2 KB
  • 大小: 14.6 KB
0
0
分享到:
评论

相关推荐

    springmvc+mybatis+oracle

    ### Spring MVC 与 Oracle 整合的关键知识点 ...通过以上详细的配置文件解读,我们已经了解了如何使用Spring MVC、MyBatis与Oracle进行整合。这些配置是整个项目的基础,确保了项目的正常运行和数据处理能力。

    spring源码解读.txt

    ### Spring框架核心概念与源码解析 #### 一、Spring框架简介 Spring是一个开源的Java应用框架,由Rod Johnson创建并领导开发。Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect ...

    ssh架构快速搭建与xml配置解读(附源码)

    SSH架构是Java开发中一种常见的企业级应用框架,由Spring、Struts和Hibernate三个开源框架组合而成。...在实际开发中,还可以根据需求集成其他组件,如Spring MVC、MyBatis等,进一步增强应用的功能和性能。

    springboot 动态数据源的实现方法(Mybatis+Druid)

    在源码解读部分,`AbstractRoutingDataSource`是Spring JDBC提供的一种抽象数据源,它为动态数据源提供基础支持。`targetDataSources`是一个Map,用于存储数据源键(通常是字符串)与实际数据源对象的映射。`...

    基于springboot的企业财务系统源码.zip

    四、源码解读 1. **主启动类**:查找@SpringBootApplication注解,这是SpringBoot应用的入口点,启动后会自动扫描指定包下的组件。 2. **配置文件**:如application.properties,配置数据库连接信息、服务器端口、...

    MyBaits视频教程

    以上是对“MyBatis视频教程”所涵盖知识点的详细解读,旨在帮助初学者快速掌握该框架的核心概念和技术要点,同时也为进阶用户提供深入理解和实践指导。希望这份资料能够满足您对于MyBatis学习的需求,并助力于您的...

    SpringBoot实战_springboot实战_

    以下是对该书内容的详细解读: 1. **SpringBoot概述**:SpringBoot的核心理念是“约定优于配置”,它提供了默认的配置,减少了大量的XML配置工作。书中会详细介绍SpringBoot的起源、设计目标以及如何快速搭建一个...

    hsweb-framework:hsweb(hass w开发b)是一个基于spring-boot 2.x开发的,首个使用全响应式编程的企业级后台管理系统基础项目

    hsweb4基于spring-boot2,全响应式的后台管理框架 功能,特性 基于 , 的通用响应式CRUD H2,Mysql,SqlServer,PostgreSQL 响应式r2dbc事务控制 响应式权限控制,以及权限信息获取 RBAC权限控制 ...

    配置裸Ibatis

    【标题】"配置裸Ibatis"的详细解读 在Java Web开发中,Ibatis作为一个轻量级的持久层框架,以其灵活的SQL映射和强大的数据访问能力深受开发者喜爱。"配置裸Ibatis"指的是不依赖任何容器或框架,直接在Java应用中...

Global site tag (gtag.js) - Google Analytics