一起学习Mybatis----配置环境environments

版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/weixin_43549578/article/details/84880986

 environments :  

配置环境可以注册多个数据源( data Source),每一个数据源分为两大部分:一个是数据库源的配置,另外一个是数据库事务( transactionManager)的配置。

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">
      <property name="driver" value="com.jdbc.mysql.Driver"/>
      <property name="url" value="jdbc:mysql://"/>
      <property name="username" value="root"/>
      <property name="password" value="root"/>
    </dataSource>
  </environment>
</environments>

 environments中的属性 default,标明在缺省的情况下,我们将启用哪个数据源配置
 environment元素是配置一个数据源的开始,属性id是设置这个数据源的标志,以便 MyBatis上下文使用它。
 transactionManager配置的是数据库事务,其中type属性有3种配置方式。
    (1)JDBC,采用JDBC方式管理事务,在独立编码中我们常常使用。
    (2) MANAGED,采用容器方式管理事务,在JNDI数据源中常用
    (3)自定义,由使用者自定义数据库事务管理办法,适用于特殊应用
property元素则是可以配置数据源的各类属性,我们这里配置了 auto Commit= false,则是要求数据源不自动提交。
data Source标签,是配置数据源连接的信息,type属性是提供我们对数据库连接方式的配置,同样 My Batis提供这么几种配置方式:
    (1) UNPOOLED,非连接池数据库( UnpooledData Source)
    (2) POOLED,连接池数据库( PooledData Source)。
    (3)JNDI,JNDI数据源( JNDIDataSource)
    (4)自定义数据源。
property配置是定义数据库的各类参数。

 数据库事务 :

    My Batis是交由 Sqlsession去控制的,我们可以通过 Sqlsession提交( commit)或者回滚( rollback)。我们插入一个角色对象,如果成功就提交,否则就回滚.

   sqlSession.commit();

   sqlSession.rollback();

databaseIdProvider:

<databaseIdProvider type="DB_VENDOR">
  <property name="SQL Server" value="sqlserver"/>
  <property name="DB2" value="db2"/>     
  <property name="Msql" value="msql"/>        
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

    type=" DB VENDOR"是启动 My Batis内部注册的策略器。首先 My Batis会将你的配置读入Configuration类里面,在连接数据库后调用 getDatabase ProductNameO方法去获取数据库的信息,然后用我们配置的name值去做匹配来得到 Databased。我们把这些配置到我们的例子里,而我们的例子使用的正是 MySQL数据库。这个时候,我们可以用下面的代码来获
得数据库的I,显然结果就是 MySQL。

sqlSessionFactory. getconfiguration(). getDatabaseId();

也可以在SQL在哪个数据库厂商执行。

<select parameterType=string"id="getRole" resultType="role" databaseId=“mysql">

在多了一个 databased属性的情况下, My Batis将提供如下规则
     如果没有配置 databased Provider标签,那么 databased就会返回null
     如果配置了 databased Provider标签, My Batis就会用配置的name值去匹配数据库信息,如果匹配得上就会设置 databased,否则依旧为null

     如果 Configuration的 databased不为空,则它只会找到配置 databased的sQL语句。

    My Batis会加载不带 databased属性和带有匹配当前数据库 databased属性的所有语句。如果同时找到带有 databased和不带 databased的相同语句,则后者会被舍弃。
自定义的商家标识:

   需要实现databaseIdProvider 接口,并且配置

<databaseIdProvider type="com.xxx.xxxMydatabaseIdProvider">
  <property name="SQL Server" value="sqlserver"/>
  <property name="DB2" value="db2"/>     
  <property name="Msql" value="msql"/>        
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

猜你喜欢

转载自blog.csdn.net/weixin_43549578/article/details/84880986