天天看點

SSM架構學習之路-Mybatis(四)配置解析

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 的運作時行為

SSM架構學習之路-Mybatis(四)配置解析
SSM架構學習之路-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、生命周期和作用域

SSM架構學習之路-Mybatis(四)配置解析

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

SqlSessionFactoryBuilder:

  • 一旦建立SqlSessionFactory,就不再需要它了
  • 局部變量

SqlSessionFactory:

  • 說白了就是可以想象為:資料庫連接配接池
  • SqlSessionFactory 一旦被建立就應該在應用的運作期間一直存在,沒有任何理由丢棄它或重新建立另一個執行個體。
  • 一次SqlSessionFactory 的最佳作用域是應用作用域。
  • 最簡單的就是使用單例模式或者靜态單例模式。

SqlSession:

  • 連接配接到連接配接池的一個請求!
  • SqlSession 的執行個體不是線程安全的,是以是不能被共享的 ,是以它的最佳的作用域是請求或方法作用域。
  • 用完之後需要趕緊關閉,否則資源被占用
SSM架構學習之路-Mybatis(四)配置解析

這裡面的每一個Mapper,就代表一個具體的業務!