1. 程式人生 > 其它 >MyBatis入門 核心配置檔案

MyBatis入門 核心配置檔案

一個完整的配置例項:

<?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.properties屬性引入外部配置檔案 -->
      <properties resource="com/mybatis/example/config.properties"
> <!-- property裡面的屬性全域性均可使用 --> <property name="username" value="root"/> <property name="pasword" value="123"/> </properties> <!--2. 全域性配置引數 --> <settings> <!-- 設定是否啟動快取 --> <setting name
="cacheEnabled" value="true"/> <!-- 設定是否啟用懶載入 --> <setting name="lazyLoadingEnabled" value="true"/> </settings> <!-- 3.別名設定 --> <typeAliases> <typeAlias type="com.mybatis.domain.User" alias="user"/> <typeAlias
type="com.mybatis.domain.Customer" alias="customer"/> </typeAliases> <!-- 4.型別轉換器 --> <typeHandlers> <!-- 一個簡單型別轉換器 --> <typeHandler handler="com.mybatis.example.ExampleTypeHandler"/> </typeHandlers> <!-- 5.物件工廠 --> <objectFactory type="com.mybatis.example.ExampleObjectFactory"> <!-- 物件工廠注入的引數 --> <property name="someProperty" value="100"/> </objectFactory> <!-- 6.外掛 --> <plugins> <plugin interceptor="com.mybatis.example.ExamplePlugin"> <property name="someProperty" value="100"/> </plugin> </plugins> <!-- 7.environments資料庫環境配置 --> <!-- 和Spring整合後environments配置將配廢除 --> <environments default="development"> <environment id="development"> <!-- 使用JDBC事務管理 --> <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> <!-- 8.載入對映檔案 --> <mappers> <mapper resource="com/mybatis/mapper/UserMapper.xml" /> <mapper resource="com/mybatis/mapper/CustomerMapper.xml" /> </mappers> </configuration>


各個配置引數的詳解:
properties引數用來引入一個外部屬性檔案:
引入一個config.properties檔案

<!-- 1.properties屬性引入外部配置檔案 -->
<properties resource="com/mybatis/example/config.properties">
    <!-- property裡面的屬性全域性均可使用 -->
    <property name="username" value="root"/>
    <property name="pasword" value="123"/>
</properties>

config.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///ssm
username=root
password=123


properties標籤引入它避免了資料庫資訊的“硬編碼”,當需要連線其他資料庫的時候,只需要連線其他資料庫時,只需要更改資料庫的配置檔案即可。
當propertieszhong you property子標籤時,並且子標籤配置了引的屬性檔案的屬性值,這時取的就是property子標籤中的value值。
在properties變遷中引入的配置檔案資訊以及property子標籤中的配置的資訊,在其他標籤中可以使用" &quot; 佔 位 符 的 方 式 來 獲 取 , 在 &quot; {}&quot;佔位符的方式來獲取,在&quot; "佔位符的方式來獲取,在"{}"中填寫引入的配置檔案中引數的name或者property子標籤的name。
例如:

<dataSource type="POOLED">
    <property name="driver" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
</dataSource>



setting配置影響Mybatis框架在執行時的一些行為,在這就不詳細介紹了,只需大致瞭解setting中包含了哪些設定,然後在需要用的時候,檢視setting的文件即可。
setting配置常用來實現快取、延遲載入和分頁設定。
Setting配置的樣例:
https://blog.csdn.net/qq_37745636/article/details/98953127

typeAliases配置
在MyBatis的SQL對映配置檔案中,常使用parameterType、resultType之類的引數設定SQL語句的輸入/輸出引數,一般引數都是一個java型別的資料,有基本資料型別或引用資料型別,單數一般都要宣告該型別的全路徑名稱,例如“java.lang.String”、“com.mybatis.domain.User”。
而通過在typeAliases配置中宣告該類的全路徑名稱,然後給它一個別名,在SQL對映配置檔案中指定輸入/輸出引數型別時使用別名。

<typeAliases>
    <typeAlias type="com.mybatis.domain.User" alias="user"/>
    <typeAlias type="com.mybatis.domain.Customer" alias="customer"/>
</typeAliases>



MyBatis還提供了批量定義別名的方法,指定包名即可,程式會為該包下的所有包裝類加上別名。定義別名的規範就是對應包裝類的類名首字母變成小寫。

<typeAliases>
    <package name="com.mybatis.domain" />
</typeAliases>




還可以通過註解的方式來實現
@Alias("user")
public class User {
}



Mybatis已經為Java的常見型別預設指定了別名,可以直接使用。
別名 對映的型別
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string java.lang.String
byte java.lang.Byte
long java.lang.Long
short java.lang.Short
int java.lang.Integer
integer java.lang.Integer
double java.lang.Double
boolean java.lang.Boolean
date java.util.Date
decimal java.math.BigDecimal
bigdecimal java.math.BigDecimal
object java.lang.Object
map java.util.Map
hashmap java.util.HashMap
list java.util.List
arraylist java.util.ArrayList
collection java.util.Collection
iterator java.util.Iterator

可以從上面發現規律: 基本資料型別的別名是“_”加上基本資料型別的名稱,引用資料型別的別名是資料型別的名稱首字母小寫。
建議:在實體類中定義屬性時儘量使用引用資料型別。
在返回值是個List集合的時候,ResultType中還是寫返回的list集合中物件的別名。

environments配置環境

<!-- 7.environments資料庫環境配置 -->
<!-- 和Spring整合後environments配置將配廢除 -->
<environments default="development">
<environment id="development">
    <!-- 使用JDBC事務管理 -->
    <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>


environments中的default屬性配置預設的環境,而environment中的id則是這個環境的id。
資料管理器(transactionManager)有兩種型別:分別是JDBC和MANAGED。配置為JDBC,相當於直接使用JDBC的提交和回滾設定。配置為MANAGED,則不提交和回滾連線,而是有容器來管理事務的生命週期。
關於資料來源(dataSource),在mybatis中有三種內建的資料來源型別:分別是“UNPOOLED”、“POOLED”,與“JNDI”。其中UNPLOOED設定每次請求時開啟和關閉連線,而POOLED可以設定一個管理資料庫連線的資源池,用來合理控制資料庫的連線與關閉次數,利用“池”的概念將JDBC連線物件組織起來。而JNDI則配置連線外部資料來源的資訊。

mappers配置分析
mappers標籤下有多個mapper標籤,每一個mapper標籤中配置的都是一個獨立的Mapper對映配置檔案的路徑。有以下幾種配置方式:
第一種,使用相對路徑進行配置:

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



第二種,使用絕對路徑進行配置:

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



第三種,使用介面資訊進行配置:

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



第四種,使用介面所在包進行配置:

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

REF

https://blog.csdn.net/qq_37745636/article/details/100676242

https://www.jianshu.com/p/b39b1520c903

https://baijiahao.baidu.com/s?id=1721665960375377102&wfr=spider&for=pc