首頁 > 科技

阿里內部分享的這份Mybatis深度筆記,理論實戰一鍵搞定

2021-07-08 03:04:25

Hello,今天給各位童鞋們分享的是Mybatis,趕緊拿出小本子記下來吧

Mybatis入門

1.為什麼要使用mybatis?

總結JDBC存在的問題:

1.資料庫連線的時候,使用的時候就創建,不適用立刻釋放,對資料庫進行了頻繁的連結開啟和關閉。造成了資料庫資源的浪費。

解決方案:使用資料庫連線池

2.將sql語句硬編碼(寫在)到java程式碼中,如果sql語句發生了改變。需要重新編譯java程式碼。不利於系統的維護。

解決方案:將sql放入在xml檔案中,那麼即使sql發生了改變也不需要對java程式碼重新編譯

3.jdbc中sql傳入參數和取出ResultSet中的值都存在硬編碼問題。

解決方案:sql參數的問題可以配置到xml中。至於ResultSet中查詢到的資料集自動對映成java物件。

2.ORM

3.mybatis簡介

mybatis是一個持久化層的框架。是Apache下的頂級項目。mybatis主要實現讓程式設計師把精力放到sql上,通過mybatis提供的對映方式,自動靈活的生成對應的sql以及自動把資料集對映到java物件上。

4.mybatis框架

5.mybatis入門程式

5.1搭建環境

創建Java項目並且匯入相關依賴和相應的包目錄。

5.2 配置log4j

創建log4j的配置檔案並且完成配置(可以複製)

5.3 配置SqlMapConfig.xml

5.4 創建bean物件

5.5 配置對映檔案

5.6 載入對映檔案

5.7 編寫程式碼

6.完成CRUD操作

6.1 對映檔案

6.2 編碼

7.總結原生Dao的開發的缺陷

1.sqlsession呼叫statement的id的時候還是存在硬編碼問題

2.sqlsession呼叫方法的時候傳入變數,由於方法使用Object類型來進行接收,所以即使變數類型不匹配,那麼編譯階段也不會出現錯誤。

8.Mapper代理方法

8.1 mapper代理開發規範

程式設計師需要編寫的有mapper.xml對映檔案,還有一個mapper介面。程式設計師在編寫mapper介面的時候只需要遵循mapper代理開發的規範,那麼mybatis會自動生成mapper介面的實現類的代理物件。

1.mapper.xml(對映檔案)中的namespace等於mapper介面的地址

2.mapper介面中的方法名和mapper.xml中的statement的ID保持一致

3.mapper介面中的輸入參數類型和mapper.xml中的statement的parameterType的指定類型保持一致

4.mapper介面中的返回值類型和mapper.xml中的Statement的resultType的指定類型保持一致

5.保證mapper.xml和mapper介面在同一目錄下並且名字相同

8.2mapper代理開發入門

8.2.1 對映檔案

8.2.2 mapper介面

8.2.3 測試類

9.SqlMapConfig.xml詳解

mybatis的全局配置檔案SqlMapConfig.xml。裡面可以配置以下內容:

properties(載入資原始檔)

settings(全局配置參數)

typeAliases(類型別名)

typeHandlers(類型處理器)

objectFactory(物件工廠)

plugins(插件)

environments(環境集合屬性物件)

transactionManager(事務管理)

dataSource(資料來源)

mappers(對映器)

注意:在此配置檔案中配置有先後順序的規定

9.1 properties

一般用於載入資料庫的資原始檔。這樣就避免了配置檔案中對資料庫連線使用硬編碼。使用此配置可以靈活的概念資料庫的連結參數

資原始檔:

配置使用:

properties特性:

9.2 settings全局參數配置

mybatis框架在運行的時候可以調整一些運行參數。比如開啟二級快取,開啟延遲載入(lazy)。配置全局參數會影響mybatis的運行行為。

9.3 typeAliases(別名)(重點)

應用場景:

在mapper.xml中,程式設計師定義很多statement,statement配置resultType和parameterType指定輸入和輸出的參數類型。如果不是使用別名需要編寫輸入輸出類型的全路徑。為了解決這個全路徑問題mybatis可以配置別名,方便開發。

mybatis中別名分為兩種:

9.3.1 預設別名

9.3.2 自定義別名

9.3.2.1 單個別名定義

9.3.2.2 批量別名定義

9.4 typeHandlers(類型處理器)

mybatis中使用typeHandlers完成jdbc類型和java類型的轉換。

通常不需要手動配置。因為mybatis提供的類型處理器已經可以滿足開發使用。

9.5 mappers(對映器)

9.5.1 resource載入對映

9.5.2 mapper介面載入

9.5.3 批量載入mapper

10.動態sql

mybaits對sql可以進行靈活的操作。通過表示式進行判斷對sql進行靈活的拼接,組裝。

10.1 where if

10.2 sql片段

將sql中的一部分抽離出來組成一個sql片段。其他statement可以引用這個sql片段,便於開發。

10.3 foreach

使用動態sql實現:select * from emp where eid=1 or eid=3 or eid=8

使用動態sql實現:select * from emp where eid in (1,3,8)

好啦,今天的文章就到這裡了,希望能夠幫助到螢幕前迷茫的你們


IT145.com E-mail:sddin#qq.com