zoukankan      html  css  js  c++  java
  • MyBatis(三)全局配置文件 之 environments 环境配置

    environment环境配置

    一、environment 环境配置

      1、MyBatis 可以配置多种环境,比如开发、测试和生成环境需要有不同的配置
      2、每种环境使用一个 environment 标签进行配置并指定唯一标识符
      3、可以通过 environment 标签中的 default 属性指定一个环境的标识符来快速的切换环境

    二、environment 属性

      1、environment 

        environments 指定具体环境,mybatis 可以配置多种环境,default 指定使用某种环境,可以达到快速切换环境。

        environment:配置一个具体的环境信息,id属性代表当前环境的唯一标识,必须有下面两个标签:

    transactionManager:事务管理器
    dataSource:数据源
    

         案例:

         <!-- 数据库连接环境的配置 -->
         <environments default="mysql">
             <environment id="mysql">
                  <transactionManager type="JDBC" />
                  
                  <dataSource type="POOLED">
                      <property name="driver"  value="${jdbc.driver}" />
                      <property name="url"  value="${jdbc.url}" />
                      <property name="username"  value="${jdbc.username}" />
                      <property name="password"  value="${jdbc.password}" />
                  </dataSource>
             </environment>
             
             <environment id="oracle">
                  <transactionManager type="JDBC" />
                  
                  <dataSource type="POOLED">
                      <property name="driver"  value="${jdbc.driver}" />
                      <property name="url"  value="${jdbc.url}" />
                      <property name="username"  value="${jdbc.username}" />
                      <property name="password"  value="${jdbc.password}" />
                  </dataSource>
             </environment>
         </environments>
         id :指定当前环境的唯一标识
              transactionManager 和 dataSource 都必须有

      2、transactionManager 事务管理器

        type 属性取值有:JDBC | MANAGED | 自定义

        (1)JDBC:使用了 JDBC 原生的事务管理方式,即提交和回滚都需要手动处理,依赖于从数据源得到的连接来管理事务范围。(JdbcTransactionFactory类型)

        (2)MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如:JEE应用服务器的上下文)(ManagedTransactionFactory类型)

        (3)自定义:实现TransactionFactory接口,type指定为全类名

      3、dataSource 数据源

        type 属性取值有: POOLED | UNPOOLED | JNDI | 自定义
        (1)POOLED:使用连接池,PooledDataSourceFactory(使用Mybatis的连接池)
        (2)UNPOOLED:不使用连接池,UnpooledDataSourceFactory
        (3)JNDI:在 EJB 或应用服务这类容器中查找指定的数据源(JndiDataSourceFactory)
        (4)自定义:实现 DataSourceFactory 接口,定义数据源的获取方式,type是全类名

      4、注意:实际开发中我们使用 Spring 管理数据源,并进行事务控制的配置来覆盖上述配置

      扩展:上面的事务管理器和数据源都是在 Configuration 类中进行配置的。

    public Configuration() {
        typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class);
        typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class);
    
        typeAliasRegistry.registerAlias("JNDI", JndiDataSourceFactory.class);
        typeAliasRegistry.registerAlias("POOLED", PooledDataSourceFactory.class);
        typeAliasRegistry.registerAlias("UNPOOLED", UnpooledDataSourceFactory.class);
    
        typeAliasRegistry.registerAlias("PERPETUAL", PerpetualCache.class);
        typeAliasRegistry.registerAlias("FIFO", FifoCache.class);
        typeAliasRegistry.registerAlias("LRU", LruCache.class);
        typeAliasRegistry.registerAlias("SOFT", SoftCache.class);
        typeAliasRegistry.registerAlias("WEAK", WeakCache.class);
    
        typeAliasRegistry.registerAlias("DB_VENDOR", VendorDatabaseIdProvider.class);
    
        typeAliasRegistry.registerAlias("XML", XMLLanguageDriver.class);
        typeAliasRegistry.registerAlias("RAW", RawLanguageDriver.class);
    
        typeAliasRegistry.registerAlias("SLF4J", Slf4jImpl.class);
        typeAliasRegistry.registerAlias("COMMONS_LOGGING", JakartaCommonsLoggingImpl.class);
        typeAliasRegistry.registerAlias("LOG4J", Log4jImpl.class);
        typeAliasRegistry.registerAlias("LOG4J2", Log4j2Impl.class);
        typeAliasRegistry.registerAlias("JDK_LOGGING", Jdk14LoggingImpl.class);
        typeAliasRegistry.registerAlias("STDOUT_LOGGING", StdOutImpl.class);
        typeAliasRegistry.registerAlias("NO_LOGGING", NoLoggingImpl.class);
    
        typeAliasRegistry.registerAlias("CGLIB", CglibProxyFactory.class);
        typeAliasRegistry.registerAlias("JAVASSIST", JavassistProxyFactory.class);
    
        languageRegistry.setDefaultDriverClass(XMLLanguageDriver.class);
        languageRegistry.register(RawLanguageDriver.class);
      }
  • 相关阅读:
    A1035
    A1005
    A1073
    A1061
    A1058
    A1027
    A1019
    Java 操作临时文件创建与删除
    面试必会之HashMap源码分析
    springboot整合cxf框架启动报错
  • 原文地址:https://www.cnblogs.com/niujifei/p/15221193.html
Copyright © 2011-2022 走看看