MyBatis之常見的全局配置

Properties標籤

第一種:全局配置文件內部配置數據源信息

(1)在全局配置文件中編寫數據源信息java

<properties>
    <!--name指定數據源名稱,value指定其值-->
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
    <property name="username" value="root"/>
    <property name="password" value="12345"/>
</properties>

(2)獲取數據源信息
<environments>中的<property>標籤經過${name}獲取數據源信息值,以下:mysql

<environments default="mysql">
<!--id設定編號-->
  <environment id="mysql">
      <transactionManager type="JDBC"></transactionManager>
      <!--MyBatis默認有三種數據源
          UNPOOLED 當須要數據庫連接時建立,使用結束後銷燬。
          POOLED 鏈接池,有容器的概念,當數據庫鏈接使用完以後會被回收,以隊列的形式排在隊尾並賦予新的編號
                  提升了獲取鏈接的效率
          JDNI 服務器提供的數據源,結構爲Map
      -->
      <dataSource type="POOLED">
          <property name="driver" value="${driver}"/>
          <property name="url" value="${url}"/>
          <property name="username" value="${username}"/>
          <property name="password" value="${password}"/>
      </dataSource>
  </environment>
</environments>

第二種:外部配置數據源信息

(1)編寫數據源信息
文件名:jdbcConfig.propertiessql

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
jdbc.username=root
jdbc.password=12345

(2)引入外部配置文件
全局配置文件須要引入該文件,在全局配置文件中進行以下配置:數據庫

<!--resource:外部文件的全路徑 + 文件名-->
<properties resource="cofig/jdbcConfig.properties"/>

結構以下:
服務器

(3)獲取配置源信息
<environments>中的<property>標籤經過${name}獲取數據源信息值,以下:mybatis

<environments default="mysql">
    <environment id="mysql">
        <transactionManager type="JDBC"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </dataSource>
    </environment>
</environments>

Setting標籤

配置以下:oracle

<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

typeAliases標籤

第一種:用typeAlias標籤配置

<typeAliases>
    <!--type:POJO類的全限定類名(全路徑 + 文件名)
        alias:別名-->
    <typeAlias type="com.example.mybatis.pojo.User" alias="user"/>
    <typeAlias type="com.example.mybatis.pojo.Account" alias="account"/>
</typeAliases>

第二種:用package標籤配置

<typeAliases>
    <!--name:存放POJO類的全路徑 + 包名-->
    <package name="com.emample.mybatiscrud.pojo"/>
</typeAliases>

沒有配置typeAliases前,resultType的值必須爲POJO類的全限定類名
以下:app

<select id="findAll" resultType="com.emample.mybatiscrud.pojo.User">
    SELECT * FROM user
</select>

配置以後resultType能夠直接寫別名,以下:ide

<select id="findAll" resultType="user">
    SELECT * FROM user
</select>

起別名的好處是:提升了代碼的可讀性url

environments 標籤

用於配置鏈接數據庫的環境,基本配置以下

<environments default="mysql">
    <!--id設定編號-->
    <environment id="mysql">
        <transactionManager type="JDBC"></transactionManager>
        <!--MyBatis默認有三種數據源
            UNPOOLED 當須要數據庫連接時建立,使用結束後銷燬。
            POOLED 鏈接池,有容器的概念,當數據庫鏈接使用完以後會被回收,以隊列的形式排在隊尾並賦予新的編號
                    提升了獲取鏈接的效率
            JDNI 服務器提供的數據源,結構爲Map
        -->
        <dataSource type="POOLED">
            <!--配置數據源-->
            <property name="driver" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </dataSource>
    </environment>
</environments>

databaseIdProvider標籤

該標籤用於支持數據庫的移植性

有兩組數據庫的數據源信息

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
jdbc.username=root
jdbc.password=12345

orcl.driver=oracle.jdbc.OracleDriver
orcl.url = jdbc:oracle:thin:@localhost:1521:mybatis
orcl.username=scott
orcl.password=12345

除此以外,還須要添加兩種類型的數據庫驅動,全局配置文件配置兩種數據庫的環境,這裏省略

在全局配置文件中配置databaseIdProvider,以下

<!--databaseProvider:支持多數據庫廠商的;
type="DB——VENDOR",VendorDatabaseIdProvider
做用就是獲得數據庫廠商的表示(驅動getDatabaseProductName())-->
<databaseIdProvider type="DB_VENDOR">
    <!--爲不一樣的數據庫廠商起別名-->
    <property name="MySqL" value="mysql"/>
    <property name="Oracle" value="oracle"/>
</databaseIdProvider>

一個抽象方法
UserDao

/**
 * 查詢全部用戶,同時獲取用戶下全部帳戶的信息
 */
List<User> findAll();

多個同名配置
某些狀況下,mysql和oracle執行的語句結構不同因此須要出現同名方法的多個配置
經過databaseId來指定在什麼數據庫環境下用哪一個配置

<select id="findAll" resultType="user" databaseId="oracle">
    select * FROM user
</select>

<select id="findAll" resultType="user" databaseId="mysql">
    select * FROM user
</select>

Mappers 標籤

用於映射註冊

第一種:適用於「接口 + 映射文件」的開發方式

<mappers>
    <!--resource指定映射文件的全路徑+映射文件名-->
    <mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
</mappers>

第二種:適用於「接口式」的開發方式

<mappers>
    <!--resource指定映射文件的全路徑+映射文件名-->
    <mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
    <mapper resource="com/example/mybatiscrud/dao/RoleDao.xml"/>
    <!--class指定接口文件的全路徑 + 接口文件名-->
    <mapper class="com.emample.mybatiscrud.dao.UserDao"/>
</mappers>

第三種:package配置方式

<mappers>
    <!--resource指定映射文件的全路徑+映射文件名-->
    <mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
    <mapper resource="com/example/mybatiscrud/dao/RoleDao.xml"/>
    <!--name爲存放接口文件的全路徑 + 包名-->
    <package name="com.emample.mybatiscrud.dao"/>
</mappers>

前面兩種配置方式都須要,沒建立一個新的Mapper就須要註冊一次
而是用package則不用

總結:

相關文章
相關標籤/搜索