第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

MyBatis 配置介紹

1. 前言

MyBatis 的配置十分重要,它直接左右 MyBatis 的行為。我們可以將 MyBatis 配置分為兩大部分,第一部分是 mapper,也就是容納 SQL 語句的.xml文件,另一部分是 configuration ,也就是前面小節(jié)提到的 mybatis-config.xml 文件。

本小節(jié),我們將介紹 configuration 中常見且有用的配置項(xiàng)。

2. 結(jié)構(gòu)

MyBatis 以 .xml 作為配置文件,且以 configuration 作為配置的根節(jié)點(diǎn)。在 configuration 下有諸多配置項(xiàng),它們的結(jié)構(gòu)如下:

configuration(配置)

  • properties(屬性)
  • settings(設(shè)置)
  • typeAliases(類型別名)
  • typeHandlers(類型處理器)
  • objectFactory(對(duì)象工廠)
  • plugins(插件)
  • environments(環(huán)境配置)
    • environment(環(huán)境變量)
      • transactionManager(事務(wù)管理器)
      • dataSource(數(shù)據(jù)源)
  • databaseIdProvider(數(shù)據(jù)庫(kù)廠商標(biāo)識(shí))
  • mappers(映射器)

MyBatis configuration 共 9 項(xiàng),其中一些配置在前面的小節(jié)中已經(jīng)介紹到了,下面我們將分別介紹每一項(xiàng)配置。

3. 屬性 properties

通過 properties 配置,我們可以將一些重要的配置屬性抽離到其它的 .properties 文件。

比如,dataSource 中的數(shù)據(jù)庫(kù) url、用戶名和密碼,我們可以單獨(dú)以 datasource.properties 文件來存儲(chǔ),然后在 mybatis-config.xml 文件中導(dǎo)入使用。

在 resources 目錄下新建 datasource.properties 文件,并填入以下內(nèi)容:

url=jdbc:mysql://localhost:3306/imooc?useSSL=false
username=root
password=123456

然后在 mybatis-config.xml 文件中通過 properties 配置來引入 datasource.properties 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <!--  引入datasource.properties  -->
  <properties resource="datasource.properties"/>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <!--  占位符動(dòng)態(tài)替換配置 -->
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

通過 properties 中的 resource 屬性引入 datasource.properties 后,我們就可以使用占位符的方式去動(dòng)態(tài)替換配置,如 ${url},表示從 datasource.properties 文件中取出 url 項(xiàng)并填充在此處。

它們?cè)谀夸浿械奈恢萌缦拢?/p>

src/main/resources
├── datasource.properties
├── mybatis-config.xml

4. 設(shè)置 settings

MyBatis 提供了 settings 來設(shè)置一些主要的參數(shù),它們會(huì)直接的改變 MyBatis 的運(yùn)行時(shí)行為。

settings 共有十幾項(xiàng),我們羅列一些常用的:

設(shè)置名 描述 可選值 默認(rèn)值
cacheEnabled 全局地開啟或關(guān)閉所有 mapper 中的緩存 true | false true
lazyLoadingEnabled 延遲加載的全局開關(guān),當(dāng)開啟時(shí),所有關(guān)聯(lián)對(duì)象都會(huì)延遲加載 true | false false
defaultStatementTimeout 設(shè)置數(shù)據(jù)庫(kù)查詢超時(shí)時(shí)間 任意正整數(shù) null
mapUnderscoreToCamelCase 是否開啟自動(dòng)駝峰命名規(guī)則(camel case)映射 true |false false
localCacheScope MyBatis會(huì)默認(rèn)緩存會(huì)話中的查詢,即 SESSION,若無需緩存則設(shè)置為 STATEMENT SESSION | STATEMENT SESSION
defaultEnumTypeHandler 指定 Enum 使用的默認(rèn) TypeHandler Java 類的全路徑 org.apache.ibatis.
type.EnumTypeHandler
logPrefix 指定 MyBatis 日志名稱前綴 任何字符串 未設(shè)置
logImpl 指定 MyBatis 日志的實(shí)現(xiàn),未指定時(shí)將自動(dòng)查找 SLF4J | LOG4J|LOG4J2|JDK_LOGGING|COMMONS_LOGGING|STDOUT_LOGGING|NO_LOGGING 未設(shè)置
proxyFactory 指定 Mybatis 創(chuàng)建具有延遲加載能力的對(duì)象所用到的代理工具 CGLIB | JAVASSIST JAVASSIST

當(dāng)使用它們時(shí),你只需要在 mybatis-config.xml 配置文件中打開相應(yīng)的配置。

例如,我們開啟了下劃線轉(zhuǎn)駝峰的配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
  </settings>
</configuration>

5. 別名 typeAliases

MyBatis 在指定 Java 類時(shí)需要使用到類的全路徑,如 com.imooc.mybatis.model.Blog,typeAliases 可以為全路徑定義一個(gè)別名,這樣就能減少一定的重復(fù)工作。

例如,將 com.imooc.mybatis.model.Blog 的別名定義為 Blog:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <typeAliases>
    <typeAlias type="com.imooc.mybatis.model.Blog" alias="Blog"/>
  </typeAliases>
</configuration>

MyBatis 還支持為一個(gè)包下所有類定義別名:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <typeAliases>
    <package name="com.imooc.mybatis.model"/>
  </typeAliases>
</configuration>

這樣在 com.imooc.mybatis.model 包中的所有類都有了別名,每個(gè)類的別名都是其類的名稱首字母小寫,如 Author 類的別名為 author。

6. 類型處理器 typeHandlers

類型處理器我們將在類型處理器小節(jié)中再詳細(xì)介紹。

7. 對(duì)象工廠 objectFactory

MyBatis 每次創(chuàng)建結(jié)果對(duì)象的新實(shí)例時(shí),它都會(huì)使用一個(gè)對(duì)象工廠(ObjectFactory)來完成。MyBatis 默認(rèn)的對(duì)象工廠僅僅只是實(shí)例化目標(biāo)類,我們可以自定義一個(gè)對(duì)象工廠類來覆蓋默認(rèn)的對(duì)象工廠。

配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <objectFactory type="org.mybatis.example.ExampleObjectFactory"/>
</configuration>

絕大多數(shù)情況下,這個(gè)操作都是極其危險(xiǎn)的,改變了 MyBatis 默認(rèn)的對(duì)象創(chuàng)建行為可能會(huì)帶來一定的兼容錯(cuò)誤,所以我們不做過多介紹,如果你確實(shí)需要它,可以查閱相關(guān)的資料。

8. 插件 plugins

插件我們將在插件小節(jié)中再詳細(xì)介紹。

9. 環(huán)境配置 environments

環(huán)境配置是最為復(fù)雜的一項(xiàng)配置,MyBatis 提供了多環(huán)境配置機(jī)制,例如:開發(fā)環(huán)境和生產(chǎn)環(huán)境上的數(shù)據(jù)庫(kù)配置就大概率不一樣。

每個(gè) environment 都有一個(gè)唯一的 id 字段,且 environments 需要提供一個(gè)默認(rèn)環(huán)境,如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/imooc?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

在每個(gè) environment 下又有兩個(gè)子配置項(xiàng),它們分別負(fù)責(zé)管理事務(wù)和數(shù)據(jù)源。

9.1 事務(wù)管理器 transactionManager

在 xml 文件中對(duì)應(yīng) <transactionManager type="JDBC"/>,其中 type 屬性對(duì)應(yīng)了事務(wù)管理器的兩種類型,分別是JDBC和MANAGED。

  • JDBC :直接使用了 JDBC 的提交和回滾機(jī)制。
  • MANAGED:讓容器來管理事務(wù)的整個(gè)生命周期,例如 spring 容器。

提示: 如果你使用 spring 作為容器,那么 transactionManager 會(huì)被自動(dòng)配置且可用。

9.2 數(shù)據(jù)源 dataSource

在 xml 文件中對(duì)應(yīng)<dataSource type="POOLED">,其中 type 屬性代表了數(shù)據(jù)源的類型,可選的有三種類型,如下:

  • UNPOOLED:非池化數(shù)據(jù)源,每次使用時(shí)打開,結(jié)束后關(guān)閉,不推薦。
  • POOLED:池化數(shù)據(jù)源,連接池管理連接,推薦。
  • JNDI:在 EJB 這類容器中使用,幾乎不用。

10. 數(shù)據(jù)庫(kù)廠商標(biāo)識(shí) databaseIdProvider

多數(shù)據(jù)源支持我們將在多數(shù)據(jù)源支持小節(jié)中詳細(xì)介紹。

11. 映射器 mappers

通過 mappers 配置,我們可以指定所對(duì)應(yīng) SQL 映射文件,這樣 MyBatis 才能找到另一部分的 SQL 配置文件。

mappers 可以包含多個(gè) mapper,mapper 的加載共有 4 種方式。

11.1 相對(duì)類路徑

通過 resource 屬性指定 mapper .xml 文件所對(duì)應(yīng)的類路徑。

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

11.2 URL路徑

通過 url 屬性指定 mapper .xml 文件所對(duì)應(yīng)的文件路徑。

<mappers>
  <mapper url="file:///mapper/UserMapper.xml"/>
</mappers>

11.3 類路徑

通過 class 屬性指定 mapper 類所對(duì)應(yīng)的類路徑。

<mappers>
  <mapper class="com.imooc.mybatis.mapper.UserMapper"/>
</mappers>

11.4 包路徑

通過制定包路徑,將包中的所有接口類自動(dòng)掃描為 mapper。

<mappers>
  <package name="com.imooc.mybatis.mapper"/>
</mappers>

12. 小結(jié)

  • MyBatis 的配置是比較多的,本小節(jié)列舉了一些常用且重要的配置,如果你還不滿足,可以閱讀這里的官方配置文檔
  • MyBatis 的另一部分 SQL 配置雖然分散在了包中,但通過 mappers 這個(gè)中間橋梁,二者又緊密的結(jié)合在一起了。
  • 在真實(shí)的開發(fā)中,會(huì)有專門的類庫(kù)來提供這些配置,但你需要了解它們,以便在需要時(shí)迅速作出反應(yīng)。