Mybatis(4) 配置解析
4.配置解析
4.1 核心配置檔案
l Mybatis-config.xml
l Mybatis的配置檔案包含了會深深影響Mybatis行為的設定和屬性資訊。
l configuration(配置)
u environment(環境變數)
l transactionManager(事務管理器)
l dataSource(資料來源)
4.2 環境配置(environments)
l MyBatis可以配置成適應多種環境
l 不過要記住:儘管可以配置多個環境,但每個 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 用完之後需要趕緊關閉,否則資源被佔用。
l
這裡每一個Mapper就代表執行一個業務