1. 程式人生 > >mybatis學習筆記(三)- 全域性配置檔案

mybatis學習筆記(三)- 全域性配置檔案

1. 引入 dtd 約束

為什麼要引入 dtd 約束

由於 mybatis 的全域性配置檔案很重要,我們學習 mybatis 必須要用到,但是如果不引入 dtd 約束,我們在這個檔案裡將不會得到程式碼提示,會給我們開發帶來極大不便。

引入方法

  1. 聯網情況下:直接點選 配置檔案上方的 “http://mybatis.org/dtd/mybatis-3-config.dtd” 下載,關閉配置檔案後重新開啟就可以了
  2. 無網狀態下:請參照:https://blog.csdn.net/a15920804969/article/details/79107852

2. properties 引入外部配置檔案(瞭解)

properties 標籤的使用

  • mybatis可以使用properties來引入外部properties配置檔案的內容;
    • resource:引入類路徑下的資源
    • url:引入網路路徑或者磁碟路徑下的資源
	<properties resource="dbconfig.properties"></properties>

dbconfig.properties 設計

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=[資料庫使用者名稱]
jdbc.password=[資料庫密碼]

使用

<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>

3. settings 執行時行為設定 (重要)

這是 MyBatis 中極為重要的調整設定,它們會改變 MyBatis 的執行時行為。 下面舉一個例子。

  • mapUnderscoreToCamelCase:
    • 描述:是否開啟自動駝峰命名規則對映,即從經典資料庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似對映
    • 預設值:false
    • 有效值:true|false

  • settings包含很多重要的設定項
    • setting:用來設定每一個設定項
      • name:設定項名
      • value:設定項取值
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>

4. typeAliases_別名 (重要)

typeAliases:類型別名是為 Java 型別設定一個短的名字,可以方便我們引用某個類


  1. typeAlias:為某個java型別起別名
    • type:指定要起別名的型別全類名;預設別名就是類名小寫;employee
    • alias:指定新的別名
    • 注意:別名不區分大小寫
<typeAliases>
	<typeAlias type="com.atguigu.mybatis.bean.Employee" alias="employee"/> 
</typeAliases>
  1. package:為某個包下的所有類批量起別名
    • name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個預設別名(類名小寫),)
<typeAliases>
    <package name="www.xq.mybatis.bean"/>
</typeAliases>
  1. 批量起別名的情況下,使用@Alias註解為某個型別指定新的別名
@Alias("emp")
public class Employee {
    .....
    }
  1. 注意:,MyBatis已經為許多常見的 Java 型別內建 了相應的類型別名。它們都是大小寫不敏感的,我們在起 別名的時候千萬不要佔用已有的別名。

image

5. typeHandlers_型別處理器簡介 (重要)

無論是 MyBatis 在預處理語句(PreparedStatement)中 設定一個引數時,還是從結果集中取出一個值時, 都會 用型別處理器將獲取的值以合適的方式轉換成 Java 型別。


6. plugins_外掛簡介

外掛是MyBatis提供的一個非常強大的機制,我們 可以通過外掛來修改MyBatis的一些核心行為。插 件通過動態代理機制,可以介入四大物件的任何 一個方法的執行。後面會有專門的章節我們來介 紹mybatis執行原理以及外掛

7. enviroments_執行環境

environments:環境們,mybatis可以配置多種環境 ,default指定使用某種環境。可以達到快速切換環境.


  1. environment:配置一個具體的環境資訊;必須有兩個標籤;id代表當前環境的唯一標識
  2. transactionManager:事務管理器;
    • type:事務管理器的型別;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
    • 自定義事務管理器:實現TransactionFactory介面.type指定為全類名
  3. dataSource:資料來源;
    • type:資料來源型別;UNPOOLED(UnpooledDataSourceFactory)|POOLED(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)
      自定義資料來源:實現DataSourceFactory介面,type是全類名
<environments default="dev_mysql">
<environment id="dev_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>

8. databaseIdProvider_多資料庫支援 (重要)

MyBatis 可以根據不同的資料庫廠商執行不同的語句。


  1. databaseIdProvider:支援多資料庫廠商的;
    • type=“DB_VENDOR”:VendorDatabaseIdProvider
    • 作用就是得到資料庫廠商的標識(驅動getDatabaseProductName()),mybatis就能根據數 據庫廠商標識來執行不同的sql;
      MySQL,Oracle,SQL Server,xxxx
<databaseIdProvider type="DB_VENDOR">
	<!-- 為不同的資料庫廠商起別名 -->
	<property name="MySQL" value="mysql"/>
	<property name="Oracle" value="oracle"/>
	<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

9. mappers_sql對映註冊 (重要)

mappers:將sql對映註冊到全域性配置中


  1. mapper:註冊一個sql對映
    • 註冊配置檔案
    • resource:引用類路徑下的sql對映檔案
      mybatis/mapper/EmployeeMapper.xml
    • url:引用網路路徑或者磁碟路徑下的sql對映檔案
      file:///var/mappers/AuthorMapper.xml
    • 註冊介面
      class:引用(註冊)介面,
      1. 有sql對映檔案,對映檔名必須和介面同名,並且放在與介面同一目錄下;
      2. 沒有sql對映檔案,所有的sql都是利用註解寫在介面上;
  2. 推薦:
    • 比較重要的,複雜的Dao介面我們來寫sql對映檔案
    • 不重要,簡單的Dao介面為了開發快速可以使用註解;
<mappers>
     <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> 
     <mapper class="www.xq.mybatis.dao.EmployeeMapperAnnotation"/> 
</mappers>
  1. 批量註冊:
<mappers>
    <package name="www.xq.mybatis.dao"/>
</mappers>

總結

  1. 配置檔案中的標籤是有一定順序的(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
    objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)