1. 程式人生 > >一起學習Mybatis----配置環境environments

一起學習Mybatis----配置環境environments

 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>