1. 程式人生 > 其它 >Mybatis(4) 配置解析

Mybatis(4) 配置解析

4.配置解析

    4.1 核心配置檔案

l  Mybatis-config.xml

l  Mybatis的配置檔案包含了會深深影響Mybatis行為的設定和屬性資訊。

l  configuration(配置)

properties(屬性)

settings(設定)

typeAliases(類型別名)

typeHandlers(型別處理器)

objectFactory(物件工廠)

plugins(外掛)

environments(環境配置)

u  environment(環境變數)

l  transactionManager(事務管理器)

l  dataSource(資料來源)

databaseIdProvider(資料庫廠商標識)

mappers(對映器)

4.2 環境配置(environments)

l  MyBatis可以配置成適應多種環境

不過要記住:儘管可以配置多個環境,但每個 SqlSessionFactory 例項只能選擇一種環境。

l  學會使用配置多套執行環境

l  Mybatis預設的事務管理器就是JDBC,連線池:POOLED

4.3 屬性(Properties)

u  我們可以通過properties屬性來實現引用配置檔案

u  這些屬性可以在外部進行配置,並可以進行動態替換。你既可以在典型的 Java 屬性檔案中配置這些屬性,也可以在 properties 元素的子元素中設定。

u  編寫一個配置檔案

n  db .properties

u  driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306?serverTimeZone=GMT/mybatis?useSSL=true&useUnicode=true;characterEncoding=UTF-8
username=root
password=123456

u  在核心配置檔案中引入

 

l  可以直接引入外部檔案

l  可以在其中增加一些屬性配置

l  如果兩個檔案有同一個欄位,優先使用外部配置檔案的!

4.4 類型別名(typeAliases)

l  類型別名是為java型別設定一個短的名字

l  存在的意義僅在用來減少類完全限定名的冗餘

l  <typeAliases>
    <typeAlias type="com.luo.pojo.Users" alias="users"></typeAlias>
</typeAliases>

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

掃描實體類的包,它的預設別名就為這個類的類名,首字母小寫!

<typeAliases>
    <package name="com.luo.pojo"/>
</typeAliases>

l  在實體類比較少的時候用第一種

l  如果實體類十分多,建議使用第二種。

l  第一個可以DIY別名,第二種則不行,如果非要改,需要在實體上增加註解

l  @Alias("user")

4.5 設定

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

 

 

    4.6 其他配置

4.7 對映器(mappers)

l  MapperRegistry:註冊繫結我們的Mapper檔案;

l  方式一:

l  <!—每一個Mapper.XML都需要在Mybatis核心配置檔案中註冊 -->
l  <mappers>
    <mapper resource="com/luo/dao/UsersMapper.xml" />
</mappers>

l  方式二:使用class檔案繫結註冊

l  <mappers>
   <!--<mapper resource="com/luo/dao/UsersMapper.xml" />-->
   <mapper class="com.luo.dao.UsersMapper"></mapper>
</mappers>

注意點:

u  介面和他的Mapper配置檔案必須同名!~

u  介面和他的Mapper配置檔案必須在同一個包下!

 

    4.8生命週期和作用域

       生命週期和作用域是至關重要的,因為錯誤的使用會導致非常嚴重的併發問題。

 

SqlSessionFactoryBuilder

       一旦創造了sqlsessionFacroty就不需要它。

       區域性變數

SqlSessionFactory

l  說白了可以想象為:資料庫連線池

l  SqlSessionFactory 一旦被建立就應該在應用的執行期間一直存在,沒有任何理由丟棄它或重新建立另一個例項。

l  因此 SqlSessionFactory 的最佳作用域是應用作用域。 有很多方法可以做到,最簡單的就是使用單例模式或者靜態單例模式。

SqlSession

l  連線到連線池的一個請求。

l  每個執行緒都應該有它自己的 SqlSession 例項。SqlSession 的例項不是執行緒安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。

l  用完之後需要趕緊關閉,否則資源被佔用。

這裡每一個Mapper就代表執行一個業務