MyBatis 配置

LZC發表於2020-02-16

properties

新建一個dbconfig.properties來儲存資料庫的配置資訊

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

mybatis-config.xml內容修改如下

<?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>
    <!--
        1. mybatis 可以使用properties來引入外部properties配置檔案的內容
        resource: 引入類路徑下的資源
        url: 引入網路路徑或者磁碟下的資源
    -->
    <properties resource="dbconfig.properties"></properties>
    <environments default="development">
        <!-- 配置 MyBatis 執行環境 -->
        <environment id="development">
            <!-- 配置 JDBC 事務管理 -->
            <transactionManager type="JDBC"/>
            <!-- POOLED 配置 JDBC 資料來源連線池 -->
            <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>
    <!-- 註冊UserMapper.xml -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

settings

這是 MyBatis 中極為重要的調整設定,它們會改變 MyBatis 的執行時行為。

詳細文件:https://mybatis.org/mybatis-3/zh/configura...

<?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>
    <!--
        mybatis 可以使用properties來引入外部properties配置檔案的內容
        resource: 引入類路徑下的資源
        url: 引入網路路徑或者磁碟下的資源
    -->
    <properties resource="dbconfig.properties"></properties>
    <settings>
        <!--開啟自動駝峰命名規則(camel case)對映,即從經典資料庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似對映-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <environments default="development">
        <!-- 配置 MyBatis 執行環境 -->
        <environment id="development">
            <!-- 配置 JDBC 事務管理 -->
            <transactionManager type="JDBC"/>
            <!-- POOLED 配置 JDBC 資料來源連線池 -->
            <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>
    <!-- 註冊UserMapper.xml -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

typeAliases

型別別名是為 Java 型別設定一個短的名字。 它只和 XML 配置有關,存在的意義僅在於用來減少類完全限定名的冗餘。例如:

<typeAliases>
  <typeAlias alias="Author" type="domain.blog.Author"/>
  <typeAlias alias="Blog" type="domain.blog.Blog"/>
  <typeAlias alias="Comment" type="domain.blog.Comment"/>
  <typeAlias alias="Post" type="domain.blog.Post"/>
  <typeAlias alias="Section" type="domain.blog.Section"/>
  <typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>

當這樣配置時,Blog 可以用在任何使用 domain.blog.Blog 的地方。

也可以指定一個包名,MyBatis 會在包名下面搜尋需要的 Java Bean,比如:

<typeAliases>
  <package name="domain.blog"/>
</typeAliases>

每一個在包 domain.blog 中的 Java Bean,在沒有註解的情況下,會使用 Bean 的首字母小寫的非限定類名來作為它的別名。 比如 domain.blog.Author 的別名為author;若有註解,則別名為其註解值。見下面的例子:

@Alias("author")
public class Author {
    ...
}

environments

environments裡面可以配置多個environment, 每一個environment指定一個唯一id來區分不同環境, 透過environments中的default屬性來指定某個環境

<environments default="development">
    <!-- 配置 MyBatis 執行環境 -->
    <environment id="development">
        <!-- 配置 JDBC 事務管理 -->
        <transactionManager type="JDBC"/>
        <!-- POOLED 配置 JDBC 資料來源連線池 -->
        <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>

    <environment id="test">
        <!-- 配置 JDBC 事務管理 -->
        <transactionManager type="JDBC"/>
        <!-- POOLED 配置 JDBC 資料來源連線池 -->
        <dataSource type="POOLED">
            <property name="driver" value="${jdbc2.driver}"/>
            <property name="url" value="${jdbc2.url}"/>
            <property name="username" value="${jdbc2.username}"/>
            <property name="password" value="${jdbc2.password}"/>
        </dataSource>
    </environment>
</environments>

mappers

註冊方式一

使用相對於類路徑的SQL對映檔案

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

註冊方式二
使用完全限定資源定位符(URL)

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

註冊方式三
使用對映器介面實現類的完全限定類名.
這種情況需要將SQL對映檔案與介面類放在同一個資料夾下面並且檔名相同.

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

這裡需要注意的是, 預設情況下, maven不會將src/main/java下的xml檔案進行打包的,需要在pom中進行設定, 如下所示.

<build>
      <resources>
          <!--
            預設情況下, src/main/java目錄下的非java檔案是不會被打包的,
            如果src/main/java存在一些非java的配置檔案, 需要進行設定
          -->
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
          </resource>
      </resources>
  </build>

註冊方式四

註冊某個包路徑下的所有介面.

這種情況需要將SQL對映檔案與介面類放在同一個資料夾下面並且檔名相同.

<mappers>
    <!-- com.example.mybatis.mapper 為一個包路徑 -->
   <package name="com.example.mybatis.mapper"/>
</mappers>  
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章