一起學習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>