mybatis学习总结-核心配置文件mybatis-config.xml

http://ju.outofmemory.cn/entry/94634mysql

 

在 mybatis初体验 中,在mybatis-config.xml中有这样的配置:spring

    <!-- 对事务的管理和链接池的配置 -->  
    <environments default="development">  
        <environment id="development">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.driverClassName}" />  
                <property name="url" value="${jdbc.url}" />  
                <property name="username" value="${jdbc.username}" />  
                <property name="password" value="${jdbc.password}" />   
            </dataSource>  
        </environment>  
    </environments>

从这能够看出,environments主要用于配置数据库相关,并且能够在里面配置多个environment。sql

由于有这些场景:数据库

1)为了开发设置不一样的数据库配置服务器

2)测试和生产环境数据库不一样mybatis

3)有多个数据库却共享相同的模式,即对不一样的数据库使用相同的SQL映射oracle

 

咱们能够配置几个数据库配置,咱们能够这样:测试

 <!-- 对事务的管理和链接池的配置 -->  
    <environments default="oracle_jdbc">  
        <environment id="oracle_jdbc">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.oracle.driverClassName}" />  
                <property name="url" value="${jdbc.oracle.url}" />  
                <property name="username" value="${jdbc.oracle.username}" />  
                <property name="password" value="${jdbc.oracle.password}" />   
            </dataSource>  
        </environment>  
        
        <environment id="mysql_jdbc">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.mysql.driverClassName}" />  
                <property name="url" value="${jdbc.mysql.url}" />  
                <property name="username" value="${jdbc.mysql.username}" />  
                <property name="password" value="${jdbc.mysql.password}" />   
            </dataSource>  
        </environment> 
    </environments>

 

用default指定默认的数据库连接:(这里默认oracle)ui

 <environments default="oracle_jdbc">

 

咱们每一个数据库,对应一个SqlSessionFactory,能够明确的获取哪个数据库的SqlSessionFactory。url

根据数据库环境,获取SqlSessionFactory:

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment);
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment,properties);

 

咱们的每一个数据库信息都定义在environment中,咱们看下这下面的配置:

1.transactionManager

 

示例配置:

<transactionManager type="JDBC" />

type取值范围:

JDBC:简单的使用JDBC的提交和回滚设置,一览与从数据员获得的连接来管理事务范围

MANAGED:这个配置几乎什么都没作,它历来不提交或回滚一个连接,而它让容器来管理事务的整个生命周期(好比spring、jee应用服务器的上下文)

在默认状况下,MANAGED会关闭链接,若是有时候不但愿这样时,能够从链接中中止它,将claseConnection属性设置为false:

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

 

2.dataSource

用来配置基本的JDBC数据源链接信息

示例配置:

<dataSource type="POOLED">  
   <property name="driver" value="${jdbc.mysql.driverClassName}" />  
   <property name="url" value="${jdbc.mysql.url}" />  
   <property name="username" value="${jdbc.mysql.username}" />  
   <property name="password" value="${jdbc.mysql.password}" />   
</dataSource>

type取值范围:

UNPOOLED:这个数据源的实现是每次被请求时打开和关闭链接。速度会有一些慢,适用于简单的应用程序。

这种类型的数据源只须要配置下面的6种属性(最后一项为可选):

driver JDBC驱动名
url JDBC URL地址
username 数据库用户名
password 数据库密码
defaultTransactionIsolationLevel 默认的连接事务隔离级别
driver.encoding utf-8(可选项)

 

POOLED:这是JDBC连接对象的数据源链接池的实现,用来避免建立新的连接实例时必要的链接和认证时间。适用于当前Web应用程序用来快速响应请求

这种类型的数据源除了须要配置UNPOOLED中的基础配置外,还能够配置下面的内容:

poolMaximumActiveConnections 在任意时间正在使用连接的数量
poolMaximumIdleConnections 任意时间存在的空闲链接数
poolMaximumCheckoutTime 在被强制返回以前,链接池中被检查的时间,默认值为20000毫秒
poolTimeToWait 给链接池一个打印日志状态机会的低层次设置,还有从新尝试获取链接,这些状况每每会须要很长时间。为了不链接池没有配置时静默失败。默认值20000毫秒
poolPingQuery 发送到数据的侦测查询,用来验证链接是否正常工做,而且准备接受请求。默认为“NO PING QUERY SET”,这会引发许多数据库驱动链接由一个错误信息而致使失败
poolPingEnabled 这是开启或禁用侦测查询,若是开启,必须用一个合法的SQL语句,设置poolPingQuery属性,默认值为false
poolPingConnectionsNotUsedFor 用来配置poolPingQuery多长时间被调用一次。能够被设置匹配标准的数据库连接超时时间,来避免没必要要的侦测。默认值0(也就是全部连接每一时刻都被侦测到,但仅仅当poolPingEnabled为true时适用)。

 

 

JNDI:这个数据源是为了使用如Spring或应用服务器这类的容器,容器能够集中或在外部配置数据源,而后设置JNDI上下文的引用。

这个数据源只须要配置两个属性:

initial_context 用来从初始上下文中寻找环境(也就是initialContext.lookup(initial——context)),这是个可选属性,若是被忽略,那么data_source属性将直接以initialContext为背景再次寻找
data_source 这是引用数据源实例位置的上下文的路径,它会以initial_context查询返回的环境为背景来查找,若是initial_context没有返回结果时,直接以初始上下文为环境来查找。

和其余数据源配置相似,他能够经过名“env.”的前缀来直接向初始上下文发送属性,好比:

env.encoding=UTF8
相关文章
相关标签/搜索