4、配置解析
4.1、核心配置檔案
- mybatis-config.xml
- Mybatis 的配置檔案中包含了會深深影響 Mybatis 行為設定和屬性的資訊
configuration(配置) properties(屬性) settings(設定) typeAliases(類型别名) typeHandlers(類型處理器) objectFactory(對象工廠) plugins(插件) environments(環境配置) environment(環境變量) transactionManager(事務管理器) dataSource(資料源) databaseIdProvider(資料庫廠商辨別) mappers(映射器)
4.2、環境配置(environments)
Mybatis 可以配置成适應多種環境
不過要記住:盡管可以配置多個環境,但每個SqlSessionFactory執行個體隻能選擇一種環境。
學會使用配置多套運作環境!
Mybatis預設的事務管理器就是JDBC,連接配接池:POOLED
4.3、屬性(properties)
我們可以使用properties屬性來實作引用配置檔案
這些屬性都是可外部配置且可動态替換的,既可以在典型的 Java 屬性檔案中配置,亦可通過 properties 元素的子元素來傳遞。 【db.properties】
編寫一個配置檔案
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123
在核心配置檔案中映入
<!--引入外部配置檔案-->
<properties resource="db.properties">
<property name="username" value="root"/>
<property name="password" value="123456"/>
</properties>
- 可以直接引入外部檔案
- 可以在其中增加一些屬性配置
- 如果兩個檔案有同一個字段,優先使用外部配置檔案的字段!
4.4、類别名(typeAlias)
- 類型别名是為 Java 類型設定一個短的名字。
- 它隻和 XML 配置有關,存在的意義僅在于用來減少類完全限定名的備援。
<typeAliases>
<typeAlias type="com.wsw.pojo.User" alias="user"/>
</typeAliases>
也可以指定一個包名,MyBatis 會在包名下面搜尋需要的 Java Bean, 比如:
掃描實體類的包,它的預設别名就為這個類的 類名,首字母小寫!
<!--可以給實體類起一個别名-->
<typeAliases>
<package name="com.wsw.pojo"/>
</typeAliases>
在實體類比較少的時候,使用第一種方式
如果實體類比較多,建議使用第二種方式
第一種可以自定義别名,第二種則:‘不行’,如果非要改,需要在實體類上增加注解
@Alias("user")
public class User{}
4.5、設定
這是 Mybatis 中極為重要的調整設定,它們會改變 Mybatis 的運作時行為
4.6、其他配置
- typeHandlers(類型處理器)
- objectFactory(對象工廠)
- plugins(插件)
- mybatis-generatro-core
- mybatis-plus
- 通用 Mapper
4.7、映射器
MapperRegistry:注冊綁定我們的Mapper檔案;
方式一:【推薦使用】
<!--一個Mapper.xml需要在Mybatis的核心配置檔案中注冊!-->
<mappers>
<mapper resource="com/wsw/dao/UserMapper.xml"/>
</mappers>
方式二:使用class檔案綁定注冊
<!--一個Mapper.xml需要在Mybatis的核心配置檔案中注冊!-->
<mappers>
<mapper class="com.wsw.dao.UserMapper"/>
</mappers>
方式三:使用掃描包進行注冊綁定注冊
<!--一個Mapper.xml需要在Mybatis的核心配置檔案中注冊!-->
<mappers>
<package name="com.wsw.dao"/>
</mappers>
注意點:
- 接口和它的Mapper配置檔案必須同名!
- 接口和它的Mapper配置檔案必須在同一個包下!
4.8、生命周期和作用域
生命周期和作用域類是至關重要的,因為錯誤的使用會導緻非常嚴重的并發問題 。
SqlSessionFactoryBuilder:
- 一旦建立SqlSessionFactory,就不再需要它了
- 局部變量
SqlSessionFactory:
- 說白了就是可以想象為:資料庫連接配接池
- SqlSessionFactory 一旦被建立就應該在應用的運作期間一直存在,沒有任何理由丢棄它或重新建立另一個執行個體。
- 一次SqlSessionFactory 的最佳作用域是應用作用域。
- 最簡單的就是使用單例模式或者靜态單例模式。
SqlSession:
- 連接配接到連接配接池的一個請求!
- SqlSession 的執行個體不是線程安全的,是以是不能被共享的 ,是以它的最佳的作用域是請求或方法作用域。
- 用完之後需要趕緊關閉,否則資源被占用
這裡面的每一個Mapper,就代表一個具體的業務!