1. 程式人生 > 資訊 >2399 元,Audeze Penrose 無線遊戲耳機發售:平板振膜/廣播級麥克風

2399 元,Audeze Penrose 無線遊戲耳機發售:平板振膜/廣播級麥克風

4、配置解析

1、核心配置檔案

  • mybatis-config.xml

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

    configuration(配置)
      properties(屬性)
      settings(設定)
      typeAliases(類型別名)
      typeHandlers(型別處理器)
      objectFactory(物件工廠)
      plugins(外掛)
      environments(環境配置)
        environment(環境變數)
          transactionManager(事務管理器)
          dataSource(資料來源)
      databaseIdProvider(資料庫廠商標識)
      mappers(對映器)
    

2、環境配置(environments)

MyBtis可以配置成適應多種環境。

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

學會使用配置多套執行環境!(可以在environments中配置多個environment,在default中選擇要使用的那個環境的id

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

其他的transactionManager:MANAGED. 和 UNPOOLED...

3、屬性(properties)

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

這些屬性都是可外部配置且可動態替換的,既可以在典型的Java屬性檔案中配置,亦可以通過properties元素的子元素來傳遞。【db.properties】

編寫一個配置檔案

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?userSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=liuchang

在核心配置檔案中引入

    <!--引入外部配置檔案-->
    <properties resource="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="liuchang"/>
    </properties>
  • 可以直接引入外部檔案
  • 可以在其中增加一些屬性配置
  • 如果兩個檔案有同一個欄位,優先使用外部配置檔案的。(實質是覆蓋掉了標籤體中的)

4、類型別名(typeAliases)

  • 存在的意義:用來減少類完全限定名的冗餘。
  • 類型別名是為Java型別設定一個短的名字。
<typeAliases>
    <typeAlias alias="User"type="com.dogeleft.pojo.User"/>
</typeAliases>

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

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

    <typeAliases>
        <package name="com.dogeleft.pojo"/>
    </typeAliases>
  • 如果包下實體過多,就建議使用package取別名。
  • 且package的別名,可以獲取註解@Alias("dogeleft")中的別名

5、設定

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

  • logImpl
  • cacheEnabled
  • lazyLoadingEnable

6、其他配置

  • TypeHandlers(型別處理器)
  • objectFactory(物件工長)
  • Plugins外掛
    • mybatis-generator-core
    • Mybatis-plus
    • 通用Mapper

7、對映器(mappers)

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

方式一,通過完全限定名:【推薦使用】

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

方式二,使用class訪問:

    <mappers>
        <mapper class="com.dogeleft.dao.UserMapper"/>
    </mappers>

注意點:

  • 介面和它的Mapper配置檔案必須同名
  • 介面和它的Mapper配置檔案必須在同一個包下

方式三,使用掃描包進行注入繫結:

    <mappers>
        <package name="com.dogeleft.dao"/>
    </mappers>
  • 介面和它的Mapper配置檔案必須同名
  • 介面和它的Mapper配置檔案必須在同一個包下

總結:

  • 實體類的別名
  • 通過外部檔案匯入配置屬性

8、生命週期和作用域

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

SqlSessionFactoryBuilder:

  • 一旦建立了SqlSessionFactory,就不再需要它了
  • 區域性變數

SqlSessionFactory:

  • 就是一個SqlSession的創造工廠:類似資料庫連線池
  • SqlSessionFactory一旦被建立就應該在應用的執行期間一直存在,沒有任何理由丟棄它或重新建立另一個例項。
  • 因此SqlSessionFactory的最佳作用域是應用作用域。
  • 最簡單的就是使用單例模式或者靜態單例模式

SqlSession:

  • 連線到連線池的一個請求
  • SqlSession的例項不是執行緒安全的,因此是不能被共享的,所以它的最佳作用域是請求或方法作用域。
  • 用完之後需要趕緊關閉,否則資源被佔用!

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