MyBatis從入門到精通、MyBatis知識點整理總結

.初識MyBatis

1、MyBatis是Java輕量級的持久層框架

2、常見的持久層框架:hibernate,mybatis

3、什麼是持久層框架:

1》Java當中的對象有兩種狀態,一種是瞬態,一種是持久態

2》所謂瞬態:是指new了一對象,使用完畢後,java自動垃圾回收了,對象中的屬性和狀態沒有保持住,這就是瞬態對象。

3》所謂持久態:這個對象的狀態和屬性保持住了,其中保存的位置有很多種,比如文件或數據庫。如果保存在數據庫中,我們就可以使用jdbc來存取裏面的數據,而jdbc不是很方便,這樣產生了一種框架,叫持久層框架,目的就是很方便地來操作數據庫中的對象。

4、Hibernate和mybatis的區別:hibernate比較重,mybatis比較輕

1》MyBatis的”輕”:便於使用,方便學習,方便開發維護,兩個字簡單;不過需要寫原生SQL,不利於數據庫移植;

2》Hibernate的“重”:功能強大,數據庫無關性好,基本上不需要寫SQL,但學習門檻不低,要精通門檻更高,怎樣用好Hibernate方面需要你的經驗和能力都很強纔行

5、MyBatis的發展歷史

1》MyBatis是由iBATIS發展而來的,iBATIS = “internet” + “abatis” 的英文組合

①abates: 英文的意思是路障,或鐵絲網

②iBATIS原本是apache下面的一款加密軟件,後來轉型成了java持久層框架

iBATIS到MyBatis:改名的原因是,從apache è google code , 後來又從google code è Github ,現在下載mybatis,需要從Github中下載,路徑如下:https://github.com/mybatis/mybatis-3/releases

https://www.oschina.net/news/72595/mybatis-spring-1-3-0

6、MyBatis的特點

1》開源的優秀持久層框架

優秀:體現在兩個方面

★一個是”輕”: 便於使用,方便學習,方便開發維護,兩個字簡單

★另外一個是SQL語句與代碼分離

2》SQL語句與代碼分離

★優點:便於管理和維護

★缺點:不便於調試,需要藉助日誌工具獲得信息

3》用標籤控制動態SQL的拼接

★在jdbc中,需要手動拼裝sql語句,這會造成sql注入等程序漏洞;而且開發比較繁瑣,經常容易報錯

★在mybatis中,使用了一種叫動態SQL技術,用來替換這種拼裝SQL語句

★優點:用標籤代替編寫邏輯代碼

★缺點:拼接複雜SQL語句時,沒有代碼靈活,比較複雜

4》結果集與Java對象的自動映射

★優點:保證名稱相同即可自動映射

★缺點:對開發人員所寫的SQL依賴性很強

5》編寫原生SQL:

★優點:接近JDBC,很靈活

★缺點:對SQL語句依賴程度很高,所以MyBatis有時會被稱爲”半自動”的ORM框架,數據庫移植不方便。

6》Mybatis實現了接口綁定,使用更加方便。

★Mybatis實現了DAO接口與xml映射文件的綁定,自動爲我們生成接口的具體實現,使用起來變得更加省事和方便。

.MyBatis的環境搭建

1. 下載mybatis包

https://github.com/mybatis/mybatis-3/releases

★下載最新版本的jar包以及源代碼,如下圖:

 

2. 包導入工程

★Mybatis下載完成,解壓之後的目錄結構

 

★首先導入mybatis-3.4.1.jar

★然後導入lib目錄下的jar包

★最後再導入mysql數據庫針對jdbc驅動的jar包:mysql-connector-java-5.1.21.jar

3. 日誌配置

★爲什麼配置日誌:

★mybatis的sql語句輸出,需要通過日誌幫忙輸出,目的是爲了方便程序調試

★加入日誌配置文件log4j.properties,複製路徑如下:

★將log4j.properties複製到classpath根目錄下

 

.MyBatis的工作流程

1. 工作流程概述

 

1>讀取配置文件( 基本配置文件,裏面包含兩部分信息,一部分是連接數據庫的相關信息,另一部分是MAP配置文件的存放位置 )

2>mybatis-3-mybatis-3.4.1\src\test\java\org\apache\ibatis\submitted\complex_property\ Configuration.xml :將此文件複製到工程中

 

3>生成SqlSessionFactory

4>SqlSessionFactory代表與數據庫的連接

5>通過SqlSessionFactory可以創建SqlSession

6>建立SqlSession

7>通過SqlSession調用MyBatis中的各種API函數,來執行增刪改查操作

8>查詢MAP配置( 裏面存有SQL語句 )

9>返回結果

10>關閉SqlSession

2、配置文件(包括兩種,一種是基本配置文件,一種是MAP映射配置文件)

3、SqlSession

1》SqlSession的作用:

★向Sql語句傳入參數

★執行Sql語句

★獲取執行Sql語句的結果

★事務控制

2》如何得到SqlSession:

★通過配置文件獲取數據庫連接相關信息

★通過配置信息構建SqlSessionFactory

★通過SqlSessionFactory打開數據庫會話SqlSession

3》生命週期:

★一個程序中,一般只建立一個SqlSessionFactory

★一個程序中,可以創建多個Session,當執行某個數據庫操作時,建立SqlSession,數據庫操作執行完畢後,SqlSession需要關閉,所以等下次再進行數據庫操作時,需要重新建立新的SqlSession對象。

.案例演示

1. 案例1

★在沒有整合spring框架之前,基於mybatis,實現客戶表的增刪改查,分別用兩種方式實現:

★一種是通過namespace+id, 找到sql語句,執行對應sql

★一種是通過dao接口執行sql語句對應的方法

 

 



 

 


2. 案例2:

在演示案例2之前,先用mybatis自定義一個增刪改查的dao

l mybatis與spring整合之後,實現客戶表的增刪改查

第一步:引入spring相關的jar包,如下圖:

 

第二步:配置spring.xml,如下圖:

 

 

第三步:配置spring-mybatis.xml,如下圖:

 

第四步:測試類:

 

 

3. 案例3:

 基於mybatis,實現學生表和老師表的多表的查詢

Teacher.java

 

Student.java

 

 TeacherMapper.xml

 

l StudentMapper.xml

 

l 測試類

 

 

 

.MyBatis的優缺點

優點:

1、簡單易學

       mybatis本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易於學習,易於使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。

 2、靈活

       mybatis不會對應用程序或者數據庫的現有設計強加任何影響。 sql寫在xml裏,便於統一管理和優化。通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。

3、解除sql與程序代碼的耦合

       通過提供DAL層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。

 

4、提供映射標籤,支持對象與數據庫的orm字段關係映射
5、提供對象關係映射標籤,支持對象關係組建維護
6、提供xml標籤,支持編寫動態sql。

缺點:

1、編寫SQL語句時工作量很大,尤其是字段多、關聯表多時,更是如此。
2、SQL語句依賴於數據庫,導致數據庫移植性差,不能更換數據庫。

3、框架還是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,但是整個底層數據庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速數據庫修改。

4、二級緩存機制不佳

總結

       mybatis的優點同樣是mybatis的缺點,正因爲mybatis使用簡單,數據的可靠性、完整性的瓶頸便更多依賴於程序員對sql的使用水平上了。sql寫在xml裏,雖然方便了修改、優化和統一瀏覽,但可讀性很低,調試也非常困難,也非常受限。

      mybatis沒有hibernate那麼強大,但是mybatis最大的優點就是簡單小巧易於上手,方便瀏覽修改sql語句。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章