Hello,今天給各位童鞋們分享的是Mybatis,趕緊拿出小本子記下來吧Mybatis入門1.為什麼要使用mybatis?總結JDBC存在的問題:1.資料庫連線的時候,使用的時候就創建,不適用立刻釋放,對資
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)
好啦,今天的文章就到這裡了,希望能夠幫助到螢幕前迷茫的你們
相關文章
Hello,今天給各位童鞋們分享的是Mybatis,趕緊拿出小本子記下來吧Mybatis入門1.為什麼要使用mybatis?總結JDBC存在的問題:1.資料庫連線的時候,使用的時候就創建,不適用立刻釋放,對資
2021-07-08 03:04:25
最近,聯發科、三星、蘋果相繼曝光最新一代旗艦處理器。可以看出,每家產品在製造工藝以及GPU、CPU配置等方面,都有自己獨特的賣點。相比之下,已經發布半年多時間的驍龍888處理器,
2021-07-08 03:04:08
過去的許多年,網友們更多關注的是晶片本身,以及半導體裝置、材料這些典型的產業鏈產品,但很少關注晶片上游的EDA產品。但自從華為遭遇制裁後,EDA產業也成為了普通人關注的話題了
2021-07-08 03:03:59
OPPO Reno6 Pro作為目前OPPO旗下Reno系列的主打旗艦,外形輕薄,兼具時尚與美感,集效能、拍照、攝影、5G等多方面於一身。不僅有著旗艦般的體驗,同樣也有著中端機型親民的價格,不失
2021-07-08 03:03:33
近日,微眾銀行順利完成了首場斷電演練。這是一場模擬單個數據中心完全不可用的災難恢復演練,通過模擬城市級災難事故,切斷其中一個IDC中心來檢驗提升系統恢復服務、資料安全保
2021-07-08 03:03:26
大資料文摘授權轉載自學術頭條撰文:吳婷婷編審:寇建超如今,使用可穿戴裝置實時監測身體健康狀況,已經逐漸成為日常生活的標配,比如各種手環手錶,以及面板貼片等趨於微小體積的產品
2021-07-08 03:03:18