0x00:前言參考
之前的 記了一下 MyBatis 中的核心配置文件各個標籤的作用和使用場景,這篇文章細說一下配置文件中 environments 標籤的詳細使用。
0x01:標籤介紹
在 MyBatis 中,environments 是放有關數據庫連接數據的配置信息的,其中可以配置多個數據庫的連接環境,方便 sql 語句可以適用於多個數據庫環境。
在 environments 中可以配置一個個單獨的 environment,它們代表多個數據庫環境的配置信息。每一個 environment 都包含了事務管理器 transactionManager 和數據源 DataSource 信息。
0x02:代碼示例
以下是一個完整的 environments 的配置,代碼示例如下:
<environments> /<environments>
<environment> /<environment>
<transactionmanager>
<datasource> /<datasource>
<property>
<property>
<property>
<property>
<environments> /<environments>
<environment> /<environment>
<transactionmanager>
<datasource> /<datasource>
其中的事務管理器也就是 transactionManager 標籤有兩種類型,一個是 JDBC,一個是 MANAGET。配置 JDBC 代表直接使用 JDBC 的提交和回滾設置。配置 MANAGED 則不提交和回滾連接,而是中容器來管理事務的生命週期。默認情況下,MANAGED 會關閉連接,但是可以動態指定 closeConnection 參數,當設置為 false 時,在 MANAGED 類型下就不會自動關閉連接。配置如下:
<transactionmanager>
<property>
數據源 DataSource 有三種數據源類型:UNPOOLED,POOLED,JNDI。其中 UNPOOLED 是設置每次請求時都打開和關閉連接。POOLED 是設置一個管理數據庫連接的資源池,用來控制數據庫的連接與關閉次數,利用池的概念將 JDBC 連接對象組織起來。而 JNDI 是配置連接外部數據源的信息,例如服務器提供的數據源。
DataSource 中是配置 JDBC 連接數據庫說需要的各項參數信息的,詳細內容見下表:
0x03:知識拓展
MyBatis 支持配置多個數據庫連接環境,在多個數據庫中執行 sql 語句時,某些規則是不一樣的,如果要兼容各個數據庫廠商的 sql 語言規則,則需要配置 databaseIdProvider 參數。在 MyBatis 全局配置文件中添加如下配置即可:
<databaseidprovider>
<property>
<property>
這個用到的不多,瞭解一下。
0x04:總結
在 MyBatis 中使用 environments 來配置數據庫的連接信息,其中包括了事務管理器 transactionManager 和數據源 dataSource。當 sql 要支持多個廠商的規則需求時,可以通過 databaseIdProvider 配置來實現。
閱讀更多 發哥微課堂 的文章