天天看點

mybatis必知必會一

入門:

1、每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的執行個體為中心的。SqlSessionFactory 的執行個體可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置檔案或一個預先定制的 Configuration 的執行個體建構出 SqlSessionFactory 的執行個體。

2、MyBatis 包含一個名叫 Resources 的工具類,它包含一些實用方法,可使從 classpath 或其他位置加載資源檔案更加容易。

3、 XML 頭部的聲明,用來驗證 XML 文檔正确性。environment 元素體中包含了事務管理和連接配接池的配置。mappers 元素則是包含一組 mapper 映射器(這些 mapper 的 XML 檔案包含了 SQL 代碼和映射定義資訊)。

4、SqlSession 完全包含了面向資料庫執行 SQL 指令所需的所有方法。

5、依賴注入架構可以建立線程安全的、基于事務的 SqlSession 和映射器(mapper)并将它們直接注入到你的 bean 中,是以可以直接忽略它們的生命周期。

6、SqlSessionFactoryBuilder 執行個體的最佳作用域是方法作用域。

7、SqlSessionFactory 的最佳作用域是應用作用域。

8、每個線程都應該有它自己的 SqlSession 執行個體。SqlSession 的執行個體不是線程安全的,是以是不能被共享的,是以它的最佳的作用域是請求或方法作用域。

XML配置:

文檔頂層結構:

configuration 配置

  • properties 屬性
  • settings 設定
  • typeAliases 類型别名
  • typeHandlers 類型處理器
  • objectFactory 對象工廠
  • plugins 插件
  • environments 環境
    • environment 環境變量
      • transactionManager 事務管理器
      • dataSource 資料源
  • databaseIdProvider 資料庫廠商辨別
  • mappers 映射器

XML映射檔案:

SQL 映射檔案有很少的幾個***元素(按照它們應該被定義的順序):

  • cache – 給定命名空間的緩存配置。
  • cache-ref – 其他命名空間緩存配置的引用。
  • resultMap – 是最複雜也是最強大的元素,用來描述如何從資料庫結果集中來加載對象。
  • sql – 可被其他語句引用的可重用語句塊。
  • insert – 映射插入語句
  • update – 映射更新語句
  • delete – 映射删除語句
  • select – 映射查詢語句

1、MyBatis 支援 STATEMENT,PREPARED 和 CALLABLE 語句的映射類型,分别代表 PreparedStatement 和 CallableStatement 類型。

resultMap

  • constructor - 用于在執行個體化類時,注入結果到構造方法中
    • idArg - ID 參數;标記出作為 ID 的結果可以幫助提高整體性能
    • arg - 将被注入到構造方法的一個普通結果
  • id – 一個 ID 結果;标記出作為 ID 的結果可以幫助提高整體性能
  • result – 注入到字段或 JavaBean 屬性的普通結果
  • association – 一個複雜類型的關聯;許多結果将包裝成這種類型
    • 嵌套結果映射 – 關聯可以指定為一個 resultMap 元素,或者引用一個
  • collection – 一個複雜類型的集合
    • 嵌套結果映射 – 集合可以指定為一個 resultMap 元素,或者引用一個
  • discriminator – 使用結果值來決定使用哪個 resultMap
    • case – 基于某些值的結果映射
      • 嵌套結果映射 – 一個 case 也是一個映射它本身的結果,是以可以包含很多相 同的元素,或者它可以參照一個外部的 resultMap。