1. 程式人生 > >Myibaits的學習與理解,使用

Myibaits的學習與理解,使用

行為 機制 概念 adding 數據 測試 數據結構 創建 -h

WF鏈接:https://workflowy.com/s/FG9l.CwEJajH0BD Myibaits的學習、使用與理解
  • 前言
    • 最近看了MyIbatis的相關內容,因為項目中使用,需要自己有一定的理解。在網上找了不少教程,這是感覺對自己有用的。在這裏整理一下,後續需要的話可以直接尋找。其他人如果需要學習,也可以參考一下~~
  • 一、myibatis的項目+配置理解
    • 1、關於MyBatis sqlSession的一點整理 - Realfighter的個人博客
      https://my.oschina.net/realfighter/blog/363605
      • 總結:各個類的具體作用
        • SqlSessionFactoryBuilder:build方法創建SqlSessionFactory實例。
        • SqlSessionFactory:創建SqlSession實例的工廠。
        • SqlSession:用於執行持久化操作的對象,類似於jdbc中的Connection。
        • SqlSessionTemplate:MyBatis提供的持久層訪問模板化的工具,線程安全,可通過構造參數或依賴註入SqlSessionFactory實例。
        • SqlSessionUtils中getSession(方法)的源碼分析
    • 2、NyIbatia的一個實際項目+配置解讀:
      • 2.1 mybatis學習總結-mybatis初體驗
        http://ju.outofmemory.cn/entry/94632
        • 總結:
          • 構建一個簡單的MyIbatis的使用項目示例,以及對於項目的配置解讀,可以看一看。
          • 核心配置文件:mybatis-config.xml (配置:數據庫地址、賬戶密碼+mapper文件映射)
          • 實體類:就是POJO模型(查詢結果對象)
          • mapper文件:即具體的SQL文件
          • MyIbatis配置使用的邏輯:
            • 從mybatis-config.xml中讀取配置
            • →用SqlSessionFactoryBuilder構建一個SqlSessionFactory對象
            • →從SqlSessionFactory中獲取sqlSession
            • →調用sqlSession對應的方法
            • →方法入參為sqlD+查詢條件入參
      • 2.2 mybatis學習總結-核心配置文件mybatis-config.xml(一) - 為程序員服務
        http://ju.outofmemory.cn/entry/94633
        • 總結:
          • 這篇文章主要是深入解讀配置文件:
          • 配置信息的優先級:
            • 方法直接傳遞參數 > 通過resource、url引用的資源 > properties元素體內定義
          • mybatis-config.xml文件裏的屬性
            • setting設置:mybatis的主要設置解讀,關系到mybatis運行時的行為方式。
            • typeAliases的使用和理解。
            • typeHandlers的理解:暫時沒遇見過,不知道什麽作用。
      • 2.3 mybatis學習總結-核心配置文件mybatis-config.xml(二)
        http://ju.outofmemory.cn/entry/94634
        • 總結:同上一篇
          • environments元素:配置多個數據庫(不同環境的數據源)
          • transactionManager:配置解讀,其type類型取值
          • dataSource:屬性,其type類型解讀。
  • 二、數據庫連接池的理解
    • 1、淺析數據庫連接池(一) - CSDN博客
      http://blog.csdn.net/wwh578867817/article/details/46451193
    • 2、淺析數據庫連接池(二) - CSDN博客
      http://blog.csdn.net/wwh578867817/article/details/46459977
    • 總結:
      • 1、數據庫的連接過程:
        • 應用數據層向DataSource請求數據庫連接
        • →DataSource使用數據庫Driver打開數據庫連接
        • →創建數據庫連接,數據庫內部可能創建線程,打開TCP socket
        • →應用讀/寫數據庫
        • →如果該連接不再需要就關閉連接
        • →關閉socket
      • 2、連接占用資源,所以使用連接池
        • 頻繁創建(多個)線程和銷毀線程的資源消耗是非常大(每個線程會分配棧空間,每個連接都會進行tcp3次握手和斷開時的4次揮手,分配一些緩存之類的空間),所以使用連接池,避免了頻繁的創建線程和銷毀線程。
      • 3、連接池的操作:
        • 建立數據庫連接池對象(服務器啟動)
        • →按照事先指定的參數創建初始數量的數據庫連接(即:空閑連接數)
        • →對於一個數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中沒有空閑的連接,且連接數沒有達到最大(即:最大活躍連接數),創建一個新的數據庫連接
        • →存取數據庫
        • →關閉數據庫,釋放所有數據庫連接(此時的關閉數據庫連接,並非真正關閉,而是將其放入空閑隊列中。如實際空閑連接數大於初始空閑連接數則釋放連接)
        • →釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,並釋放所有連接)。
      • 4、連接池的使用:
        • 連接池的速度要快於普通連接很多,很多不是指的二者差多少毫秒,而是倍數級的差別
      • 5、連接池實現代碼:
        可以參考文章的第二篇
        • 從線程池對象中獲取連接,用完之後歸還連接。
      • 6、最優連接池配置選擇:參考概念理解。
        • 最小連接數:連接池一直保持的數據庫連接。
        • 最大連接數:連接池的連接上限,
        • 最大空閑時間MaxIdleTime:
  • 三、MyIbatis的緩存理解:
    • 1、MyBatis 緩存 - ZimZz - 博客園
      http://www.cnblogs.com/zemliu/p/3239014.html
      • 總結:
        • 一級緩存和二級緩存的區別:看原文
        • 項目如何配置開啟二級緩存:看原文即可
        • 開啟前後:console控制臺輸出的日誌的不同(如何知道其成功開啟)。
    • 2、mybatis的緩存機制(一級緩存二級緩存和刷新緩存)和mybatis整合ehcache - CSDN博客
      http://blog.csdn.net/u012373815/article/details/47069223
      • 總結:
        • 2.1 一級緩存是SqlSession級別的緩存。
          • 在操作數據庫時需要構造 sqlSession對象,在對象中有一個(內存區域)數據結構(HashMap)用於存儲緩存數據。
          • 不同的sqlSession之間的緩存數據區域(HashMap)是互相不影響的。
          • 一級緩存的作用域是同一個SqlSession,在同一個sqlSession中兩次執行相同的sql語句,第一次執行完畢會將數據庫中查詢的數據寫到緩存(內存),第二次會從緩存中獲取數據將不再從數據庫查詢,從而提高查詢效率。
          • 當一個sqlSession結束後該sqlSession中的一級緩存也就不存在了。Mybatis默認開啟一級緩存。
        • 2.2 二級緩存是mapper級別的緩存。
          • 多個SqlSession去操作同一個Mapper的sql語句,多個SqlSession去操作數據庫得到數據會存在二級緩存區域,多個SqlSession可以共用二級緩存,二級緩存是跨SqlSession的。
        • 2.3 一級緩存與二級緩存的原理+測試:參考原文即可
        • 2.4 開啟二級緩存的實戰:
          • 如何使用useCache配置禁用二級緩存
          • 如何配置mybatis刷新緩存(就是清空緩存)
          • 如何配置Mybatis Cache參數
        • 2.5 mybatis整合ehcache:目前我暫時不需要看。後續需要可以學習一下。
  • 四、結束:後續需要會同步保持更新。



Myibaits的學習與理解,使用