最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis配置文件元素示例詳解

 更新時(shí)間:2023年06月02日 09:33:40   作者:衍生星球  
在MyBatis框架的核心配置文件中,<configuration>元素是配置文件的根元素,其他元素都要在<contiguration>元素內(nèi)配置,這篇文章主要介紹了MyBatis配置文件元素,需要的朋友可以參考下

MyBatis配置文件元素

使用MyBatis框架進(jìn)行開(kāi)發(fā),需要?jiǎng)?chuàng)建MyBatis的核心配置文件,該配置文件包含重要的元素,熟悉配置文件中各個(gè)元素的功能十分重要。

在MyBatis框架的核心配置文件中,<configuration>元素是配置文件的根元素,其他元素都要在<contiguration>元素內(nèi)配置。

MyBatis配置文件中的主要元素如下所示。

<configuration>
	<!-- 屬性 -->
	<properties/>
	<!-- 設(shè)置 -->
	<settings/>
	<!-- 類(lèi)型命名 -->
	<typeAliases/>
	<!-- 類(lèi)型處理器 -->
	<typeHandlers/>
	<!-- 對(duì)象工廠(chǎng) -->
	<objectFactory/>
	<!-- 插件 -->
	<plugins/>
	<!-- 配置環(huán)境 -->
	<environments>
		<!-- 環(huán)境變量 -->
		<environment>
			<!-- 事務(wù)管理器 -->
			<transactionManager/>
			<!-- 數(shù)據(jù)源 -->
			<dataSourse/>
		</environment>
	</environments>
	<!-- 數(shù)據(jù)庫(kù)廠(chǎng)商標(biāo)識(shí) -->
	<databaseIdProvider/>
	<!-- 映射器 -->
	<mappers/>
</configuration>

在MyBatis的配置文件中包含多個(gè)元素,這些元素在配置文件中分別發(fā)揮著不同的作用。開(kāi)發(fā)人員需要熟悉的是元素各個(gè)子元素的配置。

注意<configuration>的子元素必須按照由上到下的順序進(jìn)行配置,否則MyBatis在解析XML配置文件的時(shí)候會(huì)報(bào)錯(cuò)。

properties元素

<properties>是一個(gè)配置屬性的元素,通過(guò)外部配置來(lái)動(dòng)態(tài)替換內(nèi)部定義的屬性。

【示例】配置數(shù)據(jù)庫(kù)的連接等屬性,具體方式如下。

步驟01 在項(xiàng)目的src目錄下創(chuàng)建一個(gè)名稱(chē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ù)據(jù)庫(kù)的4個(gè)屬性(driver、url、username和password)值將會(huì)由db.properties文件中對(duì)應(yīng)的值來(lái)動(dòng)態(tài)替換。這樣就為配置提供了靈活性。另外,還可以通過(guò)配置<properties>元素的子元素<property>以及通過(guò)方法參數(shù)傳遞的方式來(lái)獲取屬性值。由于使用properties配置文件來(lái)配置屬性值可以方便地在多個(gè)配置文件中使用這些屬性值,并且方便維護(hù)和修改,因此在實(shí)際開(kāi)發(fā)中最常用。

settings元素

<settings>元素主要用于改變MyBatis運(yùn)行時(shí)的行為,例如開(kāi)啟二級(jí)緩存、開(kāi)啟延遲加載等。<settings>元素中的常見(jiàn)配置及其描述如下表所示。

<settings>元素中的常見(jiàn)配置在配置文件中的使用方式如下。

<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類(lèi)型設(shè)置一個(gè)簡(jiǎn)短的名字,即設(shè)置別名。別名的設(shè)置與XML配置相關(guān),其使用的意義在于減少全限定類(lèi)名的冗余。使用<typeAliases>元素配置別名的方法如下:

<!--定義別名-->
<typeAliases>
    <typeAlias type="user" type="com.ssm.po.User"/>
</typeAliases>

<typeAliases>元素的子元素中的type屬性用于指定需要被定義別名的類(lèi)的全限定名;alias屬性的屬性值“user”就是自定義的別名,可以代替“com.ssm.po.User”使用在MyBatis文件的任何位置。如果省略alias屬性,MyBatis會(huì)默認(rèn)將類(lèi)名首字母小寫(xiě)后的名稱(chēng)作為別名。

當(dāng)POJO類(lèi)過(guò)多時(shí),還可以通過(guò)自動(dòng)掃描包的形式自定義別名,具體示例如下。

<!--使用自動(dòng)掃描包來(lái)定義別名-->
<typeAliases>
    <package name="com.ssm.po"/>
</typeAliases>

<typeAliases>元素的子元素<package>中的name屬性用于指定要被定義別名的包,MyBatis會(huì)將所有com.ssm.po包中的POJO類(lèi)以首字母小寫(xiě)的非限定類(lèi)名作為它的別名。

注意:上述方式的別名只適用于沒(méi)有使用注解的情況。如果在程序中使用了注解,那么別名為其注解的值,具體如下。

@Alias(value = "user")
    public class User{
        //user的屬性和方法
}

除了可以使用<typeAliases>元素自定義別名外,MyBatis框架還默認(rèn)為許多常見(jiàn)的Java類(lèi)型(如數(shù)值、字符串、日期和集合等)提供相應(yīng)的類(lèi)型別名,如下表所示。

提示
表中所列舉的別名可以在MyBatis中直接使用,但由于別名不區(qū)分大小寫(xiě),因此在使用時(shí)要注意重復(fù)定義的覆蓋問(wèn)題。

typeHandler元素

MyBatis在預(yù)處理語(yǔ)句(Prepared Statement)中設(shè)置一個(gè)參數(shù)或者從結(jié)果集(Resultset)中取出一個(gè)值時(shí),都會(huì)用其框架內(nèi)部注冊(cè)了的typeHandler(類(lèi)型處理器)進(jìn)行相關(guān)處理。typeHandler的作用就是將預(yù)處理語(yǔ)句中傳入的參數(shù)從javaType(Java類(lèi)型)轉(zhuǎn)換為jdbcType(JDBC類(lèi)型),或者從數(shù)據(jù)庫(kù)取出結(jié)果時(shí)將jdbcType轉(zhuǎn)換為javaType。

為了方便轉(zhuǎn)換,MyBatis框架提供了一些默認(rèn)的類(lèi)型處理器,如下表所示。

當(dāng)MyBatis框架所提供的這些類(lèi)型處理器不能夠滿(mǎn)足需求時(shí),還可以通過(guò)自定義的方式對(duì)類(lèi)型處理器進(jìn)行擴(kuò)展。自定義類(lèi)型處理器可以通過(guò)實(shí)現(xiàn)TypeHandler接口或者繼承BaseTypeHandle類(lèi)來(lái)定義。元素就是用于在配置文件中注冊(cè)自定義的類(lèi)型處理器的。它的使用方式有兩種,具體如下。

(1)注冊(cè)一個(gè)類(lèi)的類(lèi)型處理器

<typeHandlers>
    <!--以單個(gè)類(lèi)形式配置-->
    <typeHandler handler="com.ssm.type.UsertypeHandlerl" />
</typeHandlers>

上述代碼中,子元素的handler屬性用于指定在程序中自定義的類(lèi)型處理器類(lèi)。

(2)注冊(cè)一個(gè)包中所有的類(lèi)型處理器

<typeHandlers>
    <!--注冊(cè)一個(gè)包中所有的typeHandlers,系統(tǒng)在啟動(dòng)時(shí)會(huì)自動(dòng)掃描包下的使用文件-->
    <package name="com.ssm.type" />
</typeHandlers>

在上述代碼中,子元素的name屬性用于指定類(lèi)型處理器所在的包名,使用這種方式后,系統(tǒng)會(huì)在啟動(dòng)時(shí)自動(dòng)掃描com.ssm.type包下所有的文件,并把它們作為類(lèi)型處理器。

objectFactory元素

MyBatis框架每次創(chuàng)建結(jié)果對(duì)象的新實(shí)例時(shí),都會(huì)使用一個(gè)對(duì)象工廠(chǎng)(ObjectFactory)的實(shí)例來(lái)完成。MyBatis中默認(rèn)的ObjectFactory的作用就是實(shí)例化目標(biāo)類(lèi),既可以通過(guò)默認(rèn)構(gòu)造方法實(shí)例化,也可以在參數(shù)映射存在的時(shí)候通過(guò)參數(shù)構(gòu)造方法來(lái)實(shí)例化。
在通常情況下,我們使用默認(rèn)的ObjectFactory即可。MyBatis中默認(rèn)的ObjectFactory是由org.apache.ibatis.reflection.factory.DefaultObjectFactory來(lái)提供服務(wù)的,大部分場(chǎng)景下都不用配置和修改。如果想覆蓋ObjectFactory的默認(rèn)行為,那么可以通過(guò)自定義ObjectFactory實(shí)現(xiàn)。

plugins元素

MyBatis允許在已映射語(yǔ)句執(zhí)行過(guò)程中的某一點(diǎn)進(jìn)行攔截調(diào)用(通過(guò)插件來(lái)實(shí)現(xiàn))。<plugins>元素的作用就是配置用戶(hù)所開(kāi)發(fā)的插件。關(guān)于插件的使用,本書(shū)不做詳細(xì)講解,有興趣的讀者請(qǐng)查找官方文檔等資料自行學(xué)習(xí)。

environments元素

<environments>元素用于在配置文件中對(duì)環(huán)境進(jìn)行配置。MyBatis的環(huán)境配置實(shí)際上就是數(shù)據(jù)源的配置,可以通過(guò)<environments>元素配置多種數(shù)據(jù)源,即配置多種數(shù)據(jù)庫(kù)。

【示例】使用<environments>元素進(jìn)行環(huán)境配置的示例如下。

 <environments default="development">
        <environment id="development">
            <!--使用JDBC的事務(wù)管理-->
            <transactionManager type="JDBC" />
            <!--配置數(shù)據(jù)源-->
            <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)境配置的根元素,它包含一個(gè)default屬性,該屬性用于指定默認(rèn)的環(huán)境ID。<environment><environments>元素的子元素,它可以被定義多個(gè),其id屬性用于表示所定義環(huán)境的ID值。在<environment>元素內(nèi),包含事務(wù)管理和數(shù)據(jù)源的配置信息,其中<transactionManager>元素用于配置事務(wù)管理,它的type屬性用于指定事務(wù)管理的方式,即使用哪種事務(wù)管理器;<dataSource>元素用于配置數(shù)據(jù)源,它的type屬性用于指定使用哪種數(shù)據(jù)源。

在MyBatis中,可以配置兩種類(lèi)型的事務(wù)管理器,分別是JDBC和MANAGED。

  • JDBC:此配置直接使用JDBC的提交和回滾設(shè)置,依賴(lài)從數(shù)據(jù)源得到的連接來(lái)管理事務(wù)的作用域。
  • MANAGED:此配置從來(lái)不提交或回滾一個(gè)連接,而是讓容器來(lái)管理事務(wù)的整個(gè)生命周期。在默認(rèn)情況下,它會(huì)關(guān)閉連接,但一些容器并不希望這樣,為此可以將closeConnection屬性設(shè)置為false來(lái)阻止它默認(rèn)的關(guān)閉行為。

注意:如果項(xiàng)目中使用Spring+MyBatis,就沒(méi)有必要在MyBatis中配置事務(wù)管理器,因?yàn)閷?shí)際開(kāi)發(fā)中會(huì)使用Spring自帶的管理器來(lái)實(shí)現(xiàn)事務(wù)管理。

對(duì)于數(shù)據(jù)源的配置,MyBatis框架提供了UNPOOLED、POOLED和JNDI三種數(shù)據(jù)源類(lèi)型。

  • UNPOOLED:配置此數(shù)據(jù)源類(lèi)型后,在每次被請(qǐng)求時(shí)會(huì)打開(kāi)和關(guān)閉連接。它對(duì)沒(méi)有性能要求的簡(jiǎn)單應(yīng)用程序是一個(gè)很好的選擇。
  • POOLED:此數(shù)據(jù)源利用“池”的概念將JDBC連接對(duì)象組織起來(lái),避免在創(chuàng)建新的連接實(shí)例時(shí)需要初始化和認(rèn)證的時(shí)間。這種方式使得并發(fā)Web應(yīng)用可以快速地響應(yīng)請(qǐng)求,是當(dāng)前流行的處理方式。
  • JNDI:此數(shù)據(jù)源可以在EJB或應(yīng)用服務(wù)器等容器中使用。容器可以集中或在外部配置數(shù)據(jù)源,然后放置一個(gè)JNDI上下文的引用。

mappers元素

在配置文件中,<mappers>元素用于指定MyBatis映射文件的位置,一般可以使用以下4種方法引入映射器文件,具體如下所示。
(1)使用類(lèi)路徑引入

   <mappers>
      <mapper resource="com/ssm/mapper/UserMapper.xml" />
    </mappers>

(2)使用本地文件路徑引入

   <mappers>
      <mapper url=file:"http:///D:/com/ssm/mapper/UserMapper.xml" />
    </mappers>

(3)使用接口類(lèi)引入

   <mappers>
      <mapper class="com.ssm.mapper.UserMapper" />
    </mappers>

(4)使用包名引入

   <mappers>
      <package name="com.ssm.mapper" />
    </mappers>

到此這篇關(guān)于MyBatis配置文件元素的文章就介紹到這了,更多相關(guān)MyBatis配置文件元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot啟動(dòng)后運(yùn)行代碼的幾種方法

    SpringBoot啟動(dòng)后運(yùn)行代碼的幾種方法

    在開(kāi)發(fā)SpringBoot應(yīng)用時(shí),有時(shí)需要在應(yīng)用啟動(dòng)后執(zhí)行一些特定的代碼,例如監(jiān)控目錄變化、初始化數(shù)據(jù)等,然而,直接在啟動(dòng)時(shí)運(yùn)行代碼可能會(huì)遇到@Autowired服務(wù)未初始化的問(wèn)題,因此需要找到合適的時(shí)機(jī)來(lái)執(zhí)行這些代碼,所以本文給大家介紹了SpringBoot啟動(dòng)后運(yùn)行代碼的幾種方法
    2025-06-06
  • 關(guān)于JAVA中this的使用方法小結(jié)

    關(guān)于JAVA中this的使用方法小結(jié)

    現(xiàn)在讓大家看一個(gè)小例子,給你分享一下JAVA中“this”的用法,有需要的朋友可以參考一下
    2013-10-10
  • java模擬cookie登陸操作

    java模擬cookie登陸操作

    這篇文章主要為大家詳細(xì)介紹了java模擬cookie登陸操作,模擬登陸,取得cookie以記錄身份,下次請(qǐng)求時(shí)發(fā)送cookie以表明身份,感興趣的小伙伴們可以參考一下
    2016-07-07
  • SpringBoot注入配置文件的3種方法詳解

    SpringBoot注入配置文件的3種方法詳解

    這篇文章主要介紹了SpringBoot注入配置文件的3種方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java 非對(duì)稱(chēng)加密算法RSA實(shí)現(xiàn)詳解

    java 非對(duì)稱(chēng)加密算法RSA實(shí)現(xiàn)詳解

    這篇文章主要介紹了java 非對(duì)稱(chēng)加密算法RSA實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • JAVA中compareTo方法的使用小結(jié)

    JAVA中compareTo方法的使用小結(jié)

    compareTo方法的目的是用來(lái)比較兩個(gè)對(duì)象的大小的,本文主要介紹了JAVA中compareTo方法的使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java棧的應(yīng)用之括號(hào)匹配算法實(shí)例分析

    Java棧的應(yīng)用之括號(hào)匹配算法實(shí)例分析

    這篇文章主要介紹了Java棧的應(yīng)用之括號(hào)匹配算法,結(jié)合實(shí)例形式分析了Java使用棧實(shí)現(xiàn)括號(hào)匹配算法的相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • java通過(guò)poi解析word入門(mén)的操作方法

    java通過(guò)poi解析word入門(mén)的操作方法

    Apache POI 是一個(gè)處理Miscrosoft Office各種文件格式的開(kāi)源項(xiàng)目,可以使用POI在Java程序中對(duì)Miscrosoft Office各種文件進(jìn)行讀寫(xiě)操作,本文給大家介紹java通過(guò)poi解析word入門(mén)的操作方法,感興趣的朋友一起看看吧
    2024-08-08
  • Java分析Lambda表達(dá)式Stream流合并分組內(nèi)對(duì)象數(shù)據(jù)合并

    Java分析Lambda表達(dá)式Stream流合并分組內(nèi)對(duì)象數(shù)據(jù)合并

    Lambda表達(dá)式,基于Lambda所帶來(lái)的函數(shù)式編程,又引入了一個(gè)全新的Stream概念,用于解決集合類(lèi)庫(kù)既有的弊端,Lambda 允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。使用 Lambda 表達(dá)式可以使代碼變的更加簡(jiǎn)潔緊湊
    2022-12-12
  • servlet之session工作原理簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    servlet之session工作原理簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了servlet之session工作原理簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論

宁国市| 紫云| 济南市| 醴陵市| 萍乡市| 车致| 桐庐县| 桂平市| 兴海县| 延吉市| 舞钢市| 周口市| 阳春市| 璧山县| 江达县| 富源县| 贵定县| 攀枝花市| 遵化市| 乌海市| 永济市| 股票| 日土县| 遵义县| 青州市| 青岛市| 清徐县| 商洛市| 綦江县| 延吉市| 迁西县| 荥经县| 武宁县| 台南县| 潼南县| 巢湖市| 朔州市| 渭南市| 宁波市| 岐山县| 阳谷县|