MyBatis配置文件元素示例詳解
MyBatis配置文件元素
使用MyBatis框架進行開發(fā),需要創(chuàng)建MyBatis的核心配置文件,該配置文件包含重要的元素,熟悉配置文件中各個元素的功能十分重要。
在MyBatis框架的核心配置文件中,<configuration>
元素是配置文件的根元素,其他元素都要在<contiguration>
元素內配置。
MyBatis配置文件中的主要元素如下所示。
<configuration> <!-- 屬性 --> <properties/> <!-- 設置 --> <settings/> <!-- 類型命名 --> <typeAliases/> <!-- 類型處理器 --> <typeHandlers/> <!-- 對象工廠 --> <objectFactory/> <!-- 插件 --> <plugins/> <!-- 配置環(huán)境 --> <environments> <!-- 環(huán)境變量 --> <environment> <!-- 事務管理器 --> <transactionManager/> <!-- 數(shù)據源 --> <dataSourse/> </environment> </environments> <!-- 數(shù)據庫廠商標識 --> <databaseIdProvider/> <!-- 映射器 --> <mappers/> </configuration>
在MyBatis的配置文件中包含多個元素,這些元素在配置文件中分別發(fā)揮著不同的作用。開發(fā)人員需要熟悉的是元素各個子元素的配置。
注意:<configuration>
的子元素必須按照由上到下的順序進行配置,否則MyBatis在解析XML配置文件的時候會報錯。
properties元素
<properties>
是一個配置屬性的元素,通過外部配置來動態(tài)替換內部定義的屬性。
【示例】配置數(shù)據庫的連接等屬性,具體方式如下。
步驟01 在項目的src目錄下創(chuàng)建一個名稱為db.properties的配置文件,代碼如下所示。
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/db_mybatis jdbc.username=root jdbc.password=root
步驟02 在MyBatis配置文件mybatis-config.xml中配置<properties/>
屬性,具體如下。
<properties resource="db.properties" />
完成上述配置,dataSource中連接數(shù)據庫的4個屬性(driver、url、username和password)
值將會由db.properties
文件中對應的值來動態(tài)替換。這樣就為配置提供了靈活性。另外,還可以通過配置<properties>
元素的子元素<property>
以及通過方法參數(shù)傳遞的方式來獲取屬性值。由于使用properties配置文件來配置屬性值可以方便地在多個配置文件中使用這些屬性值,并且方便維護和修改,因此在實際開發(fā)中最常用。
settings元素
<settings>
元素主要用于改變MyBatis運行時的行為,例如開啟二級緩存、開啟延遲加載等。<settings>
元素中的常見配置及其描述如下表所示。
<settings>
元素中的常見配置在配置文件中的使用方式如下。
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="true"/> <setting name="autoMappingBehavior" value="PARTIAL"/> </settings>
typeAliases元素
<typeAliases>
元素用于為配置文件中的Java類型設置一個簡短的名字,即設置別名。別名的設置與XML配置相關,其使用的意義在于減少全限定類名的冗余。使用<typeAliases>
元素配置別名的方法如下:
<!--定義別名--> <typeAliases> <typeAlias type="user" type="com.ssm.po.User"/> </typeAliases>
<typeAliases>
元素的子元素中的type屬性用于指定需要被定義別名的類的全限定名;alias屬性的屬性值“user”就是自定義的別名,可以代替“com.ssm.po.User”使用在MyBatis文件的任何位置。如果省略alias屬性,MyBatis會默認將類名首字母小寫后的名稱作為別名。
當POJO類過多時,還可以通過自動掃描包的形式自定義別名,具體示例如下。
<!--使用自動掃描包來定義別名--> <typeAliases> <package name="com.ssm.po"/> </typeAliases>
<typeAliases>
元素的子元素<package>
中的name屬性用于指定要被定義別名的包,MyBatis會將所有com.ssm.po包中的POJO類以首字母小寫的非限定類名作為它的別名。
注意:上述方式的別名只適用于沒有使用注解的情況。如果在程序中使用了注解,那么別名為其注解的值,具體如下。
@Alias(value = "user") public class User{ //user的屬性和方法 }
除了可以使用<typeAliases>
元素自定義別名外,MyBatis框架還默認為許多常見的Java類型(如數(shù)值、字符串、日期和集合等)提供相應的類型別名,如下表所示。
提示 :
表中所列舉的別名可以在MyBatis中直接使用,但由于別名不區(qū)分大小寫,因此在使用時要注意重復定義的覆蓋問題。
typeHandler元素
MyBatis在預處理語句(Prepared Statement)中設置一個參數(shù)或者從結果集(Resultset)中取出一個值時,都會用其框架內部注冊了的typeHandler(類型處理器)進行相關處理。typeHandler的作用就是將預處理語句中傳入的參數(shù)從javaType(Java類型)轉換為jdbcType(JDBC類型),或者從數(shù)據庫取出結果時將jdbcType轉換為javaType。
為了方便轉換,MyBatis框架提供了一些默認的類型處理器,如下表所示。
當MyBatis框架所提供的這些類型處理器不能夠滿足需求時,還可以通過自定義的方式對類型處理器進行擴展。自定義類型處理器可以通過實現(xiàn)TypeHandler接口或者繼承BaseTypeHandle類來定義。元素就是用于在配置文件中注冊自定義的類型處理器的。它的使用方式有兩種,具體如下。
(1)注冊一個類的類型處理器
<typeHandlers> <!--以單個類形式配置--> <typeHandler handler="com.ssm.type.UsertypeHandlerl" /> </typeHandlers>
上述代碼中,子元素的handler屬性用于指定在程序中自定義的類型處理器類。
(2)注冊一個包中所有的類型處理器
<typeHandlers> <!--注冊一個包中所有的typeHandlers,系統(tǒng)在啟動時會自動掃描包下的使用文件--> <package name="com.ssm.type" /> </typeHandlers>
在上述代碼中,子元素的name屬性用于指定類型處理器所在的包名,使用這種方式后,系統(tǒng)會在啟動時自動掃描com.ssm.type包下所有的文件,并把它們作為類型處理器。
objectFactory元素
MyBatis框架每次創(chuàng)建結果對象的新實例時,都會使用一個對象工廠(ObjectFactory)的實例來完成。MyBatis中默認的ObjectFactory的作用就是實例化目標類,既可以通過默認構造方法實例化,也可以在參數(shù)映射存在的時候通過參數(shù)構造方法來實例化。
在通常情況下,我們使用默認的ObjectFactory即可。MyBatis中默認的ObjectFactory是由org.apache.ibatis.reflection.factory.DefaultObjectFactory
來提供服務的,大部分場景下都不用配置和修改。如果想覆蓋ObjectFactory的默認行為,那么可以通過自定義ObjectFactory實現(xiàn)。
plugins元素
MyBatis允許在已映射語句執(zhí)行過程中的某一點進行攔截調用(通過插件來實現(xiàn))。<plugins>
元素的作用就是配置用戶所開發(fā)的插件。關于插件的使用,本書不做詳細講解,有興趣的讀者請查找官方文檔等資料自行學習。
environments元素
<environments>
元素用于在配置文件中對環(huán)境進行配置。MyBatis的環(huán)境配置實際上就是數(shù)據源的配置,可以通過<environments>
元素配置多種數(shù)據源,即配置多種數(shù)據庫。
【示例】使用<environments>
元素進行環(huán)境配置的示例如下。
<environments default="development"> <environment id="development"> <!--使用JDBC的事務管理--> <transactionManager type="JDBC" /> <!--配置數(shù)據源--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments>
在上述示例代碼中,<environments>
元素是環(huán)境配置的根元素,它包含一個default屬性,該屬性用于指定默認的環(huán)境ID。<environment>
是<environments>
元素的子元素,它可以被定義多個,其id屬性用于表示所定義環(huán)境的ID值。在<environment>
元素內,包含事務管理和數(shù)據源的配置信息,其中<transactionManager>
元素用于配置事務管理,它的type屬性用于指定事務管理的方式,即使用哪種事務管理器;<dataSource>
元素用于配置數(shù)據源,它的type屬性用于指定使用哪種數(shù)據源。
在MyBatis中,可以配置兩種類型的事務管理器,分別是JDBC和MANAGED。
- JDBC:此配置直接使用JDBC的提交和回滾設置,依賴從數(shù)據源得到的連接來管理事務的作用域。
- MANAGED:此配置從來不提交或回滾一個連接,而是讓容器來管理事務的整個生命周期。在默認情況下,它會關閉連接,但一些容器并不希望這樣,為此可以將closeConnection屬性設置為false來阻止它默認的關閉行為。
注意:如果項目中使用Spring+MyBatis,就沒有必要在MyBatis中配置事務管理器,因為實際開發(fā)中會使用Spring自帶的管理器來實現(xiàn)事務管理。
對于數(shù)據源的配置,MyBatis框架提供了UNPOOLED、POOLED和JNDI三種數(shù)據源類型。
- UNPOOLED:配置此數(shù)據源類型后,在每次被請求時會打開和關閉連接。它對沒有性能要求的簡單應用程序是一個很好的選擇。
- POOLED:此數(shù)據源利用“池”的概念將JDBC連接對象組織起來,避免在創(chuàng)建新的連接實例時需要初始化和認證的時間。這種方式使得并發(fā)Web應用可以快速地響應請求,是當前流行的處理方式。
- JNDI:此數(shù)據源可以在EJB或應用服務器等容器中使用。容器可以集中或在外部配置數(shù)據源,然后放置一個JNDI上下文的引用。
mappers元素
在配置文件中,<mappers>
元素用于指定MyBatis映射文件的位置,一般可以使用以下4種方法引入映射器文件,具體如下所示。
(1)使用類路徑引入
<mappers> <mapper resource="com/ssm/mapper/UserMapper.xml" /> </mappers>
(2)使用本地文件路徑引入
<mappers> <mapper url=file:"http:///D:/com/ssm/mapper/UserMapper.xml" /> </mappers>
(3)使用接口類引入
<mappers> <mapper class="com.ssm.mapper.UserMapper" /> </mappers>
(4)使用包名引入
<mappers> <package name="com.ssm.mapper" /> </mappers>
到此這篇關于MyBatis配置文件元素的文章就介紹到這了,更多相關MyBatis配置文件元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot如何讀取application.properties配置文件
這篇文章主要介紹了SpringBoot如何讀取application.properties配置文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05SpringSecurity的@EnableWebSecurity注解詳解
這篇文章主要介紹了SpringSecurity的@EnableWebSecurity注解詳解,@EnableWebSecurity是開啟SpringSecurity的默認行為,它的上面有一個Import注解導入了WebSecurityConfiguration類,就是往IOC容器中注入了WebSecurityConfiguration這個類,需要的朋友可以參考下2023-11-11SpringBoot配置Access-Control-Allow-Origin教程
文章介紹了三種配置Spring Boot跨域訪問的方法:1. 使用過濾器;2. 在WebConfig配置文件中設置;3. 通過注解配置,作者分享了個人經驗,并鼓勵讀者支持腳本之家2025-03-03