天天看點

Mybatis核心配置檔案解析

文章目錄

        • 1、核心配置檔案
        • 2、環境配置(environments)
        • 3、屬性(properties)
        • 4、類型别名(typeAliases)
        • 5、設定(setting)
        • 6、其他配置
        • 7、映射器(mappers)

詳細配置可 點選此處檢視官網文檔

1、核心配置檔案

  • mybatis-config.xml
  • MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定和屬性資訊。 配置文檔的頂層結構如下:
    • configuration(配置)
      • properties(屬性)
      • settings(設定)
      • typeAliases(類型别名)
      • typeHandlers(類型處理器)
      • objectFactory(對象工廠)
      • plugins(插件)
      • environments(環境配置)
        • environment(環境變量)
          • transactionManager(事務管理器 type="[JDBC|MANAGED]")
          • dataSource(資料源 type="[UNPOOLED|POOLED|JNDI]")
      • databaseIdProvider(資料庫廠商辨別)
      • mappers(映射器)

2、環境配置(environments)

  • MyBatis 可以配置成适應多種環境

    不過要記住:盡管可以配置多個環境,但每個SqlSessionFactory執行個體隻能選擇一種環境。

  • Mybatis預設的transactionManager(事務管理器)就是JDBC
  • Mybatis預設的dataSource(資料源)是POOLED(連接配接池)

3、屬性(properties)

  • 可以通過properties屬性來實作引用配置檔案
  • 這些屬性都是可外部配置且可動态替換的,既可以在典型的Java屬性檔案中配置,亦可通過properties元素的子元素來傳遞。【db.properties】
  • 編寫一個配置檔案【db.properties】
    driver = com.mysql.jdbc.Driver
    url = jdbc:mysql://localhost:3306/mybatisnote?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username = root
    password = 123456
               
  • 核心配置檔案
    <?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核心配置檔案-->
    <configuration>
        <!--直接引入外部配置檔案-->
        <properties resource="db.properties" />
    
        <environments default="test">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <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>
    </configuration>
               
  • 可在properties中增加一些屬性配置
    <properties resource="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>
               
  • 如果兩個檔案有同一個字段,優先使用外部配置檔案的,原因如下
    如果一個屬性在不隻一個地方進行了配置,那麼,MyBatis 将按照下面的順序來加載: 首先讀取在 properties 元素體内指定的屬性。然後根據 properties 元素中的 resource 屬性讀取類路徑下屬性檔案,或根據 url 屬性指定的路徑讀取屬性檔案,并覆寫之前讀取過的同名屬性。

4、類型别名(typeAliases)

  • 類型别名是為Java類型設定一個短的名字。
  • 存在的意義僅在于用來減少類完全限定名的備援。
    <!--第一種:可以給實體類起别名-->
    <typeAliases>
        <typeAlias type="com.ping.pojo.User" alias="User"/>
    </typeAliases>
               
  • 也可以指定一個包名,MyBatis 會在包名下面搜尋需要的Java Bean
  • 掃描實體類的包,它的預設别名就為這個類的類名(首字母小寫)
    <!--第二種-->
    <typeAliases>
        <package name="com.ping.pojo"/>
    </typeAliases>
               
- 在實體類比較少的時候,使用第一種方式;如果實體類十分多,建議使用第二種

- 第一種可以自定義别名,第二種不行

- 如果非要改别名,可以在在實體上增加注解

    ```java
    import org.apache.ibatis.type.Alias;
    //第三種
    @Alias("user")
    public class User {}
           

5、設定(setting)

  • 這是 MyBatis中極為重要的調整設定,它們會改變MyBatis的運作時的行為。
設定名 描述 有效值 預設值
cacheEnabled 全局性地開啟或關閉所有映射器配置檔案中已配置的任何緩存。 true|false true
lazyLoadingEnabled 延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。 特定關聯關系中可通過設定

fetchType

屬性來覆寫該項的開關狀态。
true|false true
logImpl 指定 MyBatis 所用日志的具體實作,未指定時将自動查找。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING 未設定

6、其他配置

  • typeHandlers(類型處理器)
  • objectFactory(對象工廠)
  • plugins(插件)
    • mybatis-generator-core
    • mybatis-plus
    • 通用mapper

7、映射器(mappers)

  • MapperRegistry:注冊綁定Mapper檔案;
  • 方式一:【推薦使用】
    <!--每一種Mapper.xml都需要在mybatis核心配置檔案中注冊-->
    <mappers>
        <mapper resource="com/ping/dao/userMapper.xml"/>
    </mappers>
               
  • 方式二:使用class檔案綁定注冊
    <!--注意點:
    	接口和Mapper配置檔案必須同名
     	接口和Mapper配置檔案必須在同一個包下
    -->
    <mappers>
        <mapper class="com.ping.dao.UserMapper" />
    </mappers>
               
  • 方式三:使用包掃描進行注冊綁定
    <!--注意點同方式二-->
    <mappers>
        <package name="com.ping.dao"/>
    </mappers>