1. 程式人生 > 其它 >【Go 語言社群】Golang 高效字串拼接

【Go 語言社群】Golang 高效字串拼接

Mybatis是一款優秀的持久層框架,它支援定製化SQL儲存過程以及高階對映

Mybatis避免了幾乎所有的JDBC程式碼和手動設定引數以及獲取結果集

Mybatis可以使用簡單的XML註解來配置和對映原生型別介面Java的pojo為資料庫中的記錄。

什麼是持久化?

持久化就是將程式的資料持久狀態瞬時狀態轉化的過程。

記憶體(指的是RAM):斷電即失

為什麼需要Mybatis?

幫助程式設計師將資料存入到資料庫中。傳統的JDBC程式碼帶複雜了,需要簡化,自動化。

優點:簡單易學,靈活,sql和程式碼的分離,提高了可維護性,提供了對映標籤,

     支援物件與資料庫的orm欄位對映

提供物件關係對映標籤,支援物件關係組建維護

     提供xml標籤,支援編寫動態SQL

CRUD:

select(id 對應namespace中的方法名;resultType:SQL語句執行的返回值;parameterType:引數型別)

select * from user  where id = #{id} 、insert 、update、delete

mybatis核心配置檔案(mybatis-config.xml):包含了會深深影響Mybatis行為的設定和屬性資訊

<configuration>.配置                              <properties>.屬性                             <setting>.設定

<typeAliases>.類型別名                         <typeHandlers>.型別處理器            <objectFactory>.物件工廠

<plugins>.外掛                                       <environments>.環境配置                 <environment>.環境變數

<transactionManager>.事務管理器        <dataSource>.資料來源                     <databaseIdProvider>.資料庫廠商標識          <mappers>.對映器

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

學會使用配置多套執行環境!Mybatis預設的事務管理器就是JDBC,連線池:POOLED

屬性:可以通過properties屬性來實現引用配置檔案,這些屬性都是可外部配置且可動態替換的,既可以在

典型的Java屬性檔案中配置,亦可以通過properties元素的子元素來傳遞。(db.properties)

類型別名:為Java型別設定一個短的名字。存在的意義僅在於用來減少類完全限定名的冗餘。

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

SqlSeesionFactory:一旦被建立就應該在應用的執行期間一直存在,沒有任何理由丟棄它或重新建立另一個例項。

因此SqlSessionFactory的最佳作用域是應用作用域。最簡單的就是使用 單例模式  或 靜態單例模式

SqlSession:連線到連線池的一個請求,SQLSession的例項不是執行緒安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。

用完之後需要關閉,否則會一直佔用資源

Mapper:這裡的每一個mapper就代表一個具體的業務。

。。。。。。

快取:

查詢:連線資料庫,會耗費資源,一次查詢的結果可以給他暫時儲存在一個可以直接取到的地==>記憶體:快取

我們再次查詢相同的資料的時候,直接從快取中取,

快取:用來儲存記憶體中的臨時資料,將使用者經常查詢的資料放在快取中,使用者去查詢資料就不用從磁碟上查詢,從而提高了查詢資料,解決了高併發系統的效能問題。

為什麼使用快取:減少和資料庫的互動次數,減少系統開銷,提高系統效率。

Mybatis包含一個非常強大的查詢快取特性,他可以非常方便地定製和配置快取。快取可以極大的提高查詢效率。

mybatis快取:一級快取和二級快取

       預設情況下,只有一級快取開啟。(SqlSession級別的快取,也稱為本地快取)

      二級快取需要手動開啟和配置,它是基於namespace級別的快取

      為了提高可擴充套件性,Mybatis定義了快取介面Cache。我們可以通過實現Cache介面來定義二次快取

一級快取:也叫本地快取(SQLSession)與資料庫同義詞會話期間查詢到的資料會放在本地快取中,如果需要查詢相同的資料,直接從快取中取,不用再去訪問資料庫。

一級快取使預設開啟的,只在一次SqlSession中有效,也就是拿到連線關閉資料庫這個區間段,一級快取就是一個Map.

二級快取:也叫全域性快取,一級快取作用域太低了,所以誕生了二級快取。基於namespace級別的快取,

工作機制:一個會話查詢一條資料,這個資料就會被放在當前會話的一級快取中;如果當前會話關閉了,這個會話對應的一級快取就消失了,

     但是我們想要的是,會話關閉後,一級快取中的資料會被儲存到二級快取中。新的會話查詢資訊時,就可以從二級快取中取。

     不同的mapper查出的資料會放在自己對應的快取(map)中。

只要開啟了二級快取,在同一個Mapper下就有效,所有的資料會先放在一級快取中,只有當會話提交,或者關閉的時候,才會提交到二次快取中。