Mybaits題目

mybaits基本知識

1、請簡述MyBatis框架與Hibernate框架的區別。

Hibernate和MyBatis。這兩個框架的主要區別如下:
(1)Hibernate:是一個全表映射的框架。通常開發者只需定義好持久化對象到數據庫表的映射關係,就可以通過Hibernate提供的方法完成持久層操作。開發者並不需要熟練的掌握SQL語句的編寫,Hibernate會根據制定的存儲邏輯,自動的生成對應的SQL,並調用JDBC接口來執行,所以其開發效率會高於MyBatis。然而Hibernate自身也存在着一些缺點,例如它在多表關聯時,對SQL查詢的支持較差;更新數據時,需要發送所有字段;不支持存儲過程;不能通過優化SQL來優化性能等。這些問題導致其只適合在場景不太複雜且對性能要求不高的項目中使用。
(2)MyBatis:是一個半自動映射的框架。這裏所謂的“半自動”是相對於Hibernate全表映射而言的,MyBatis需要手動匹配提供POJO、SQL和映射關係,而Hibernate只需提供POJO和映射關係即可。與Hibernate相比,雖然使用MyBatis手動編寫SQL要比使用Hibernate的工作量大,但MyBatis可以配置動態SQL並優化SQL,可以通過配置決定SQL的映射規則,它還支持存儲過程等。對於一些複雜的和需要優化性能的項目來說,顯然使用MyBatis更加合適。

2、請簡述MyBatis的工作執行流程。

MyBatis框架的工作執行流程如下:
(1)讀取MyBatis配置文件mybatis-config.xml。
(2)加載映射文件Mapper.xml。
(3)構建會話工廠。
(4)創建SqlSession對象。
(5)使用Executor接口來操作數據庫。
(6)使用MappedStatement類型的參數對映射信息進行封裝。
(7)輸入參數映射。
(8)輸出結果映射。

Mybaits的核心配置

1、請簡述MyBatis核心對象SqlSessionFactory的獲取方式。

SqlSessionFactory對象的實例可以通過SqlSessionFactoryBuilder對象來構建,而SqlSessionFactoryBuilder則可以通過XML配置文件或一個預先定義好的Configuration實例構建出SqlSessionFactory的實例,通過XML配置文件構建出的SqlSessionFactory實例,其實現代碼如下:

// 讀取配置文件
InputStream inputStream = Resources.getResourceAsStream("配置文件位置");
// 根據配置文件構建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = 
new SqlSessionFactoryBuilder().build(inputStream);

2、請簡述MyBatis映射文件中的主要元素及其作用。

在映射文件中,元素是映射文件的根元素,其他元素都是它的子元素。這些子元素及其作用如下所示:
:用於映射查詢語句,可自定義參數,返回結果集等。
:用於映射插入語句,執行後返回一個整數,代表插入的條數。
:用於映射更新語句,執行後返回一個整數,代表更新的條數。
:用於映射刪除語句,執行後返回一個整數,代表刪除的條數。
:用於定義一部分SQL,然後可被其他語句引用此SQL。
:用於給定命名空間的緩存配置。
:用於其他命名空間緩存配置的引用。
:用於描述如何從數據庫結果集中來加載對象。

動態sql

1、請簡述MyBatis框架動態SQL中的主要元素及其作用。

MyBatis動態SQL中的主要元素及其作用如下:

(1)if元素:用於判斷語句,用於單條件分支判斷。
(2)choose(when、otherwise)元素:相當於Java中的switch…case…default語句,用於多條件分支判斷。
(3)where、trim、set元素:輔助元素,用於處理一些SQL拼裝、特殊字符問題。
(4)foreach元素:循環語句,常用於in語句等列舉條件中。
(5)bind元素: 從OGNL表達式中創建一個變量,並將其綁定到上下文,常用於模糊查詢的sql中。

2、請簡述MyBatis框架動態SQL中元素collection屬性的注意事項。

在使用時,collection屬性是必須指定的,而且在不同情況下,該屬性的值是不一樣的。主要有以下3種情況:
(1)如果傳入的是單參數且參數類型是一個數組或者List的時候,collection屬性值分別爲array和list(或collection);
(2)如果傳入的參數是多個的時候,就需要把它們封裝成一個Map了,當然單參數也可以封裝成Map集合,這時候collection屬性值就爲Map的鍵。
(3)如果傳入的參數是POJO包裝類的時候,collection屬性值就爲該包裝類中需要進行遍歷的數組或集合的屬性名。
所以在設置collection屬性值的時候,必須按照實際情況配置,否則程序就會出現異常。。

mybaits的關聯映射

1、請簡述不同對象之間的三種關聯關係。

在java中,對象之間存在着三種關聯關係,分別是一對一,一對多和多對多。在這三種關聯關係中,一對一的關係就是在本類中定義對方類型的對象,如A類中定義B類類型的屬性b,B類中定義A類類型的屬性a;一對多的關係就是一個A類類型對應多個B類類型的情況,需要在A類中以集合的方式引入B類類型的對象,在B類中定義A類類型的屬性a;多對多的關係就是在A類中定義B類類型的集合,在B類中定義A類類型的集合。

2、請簡述MyBatis關聯查詢映射的兩種處理方式。

MyBatis在映射文件中加載關聯關係對象主要通過兩種方式:嵌套查詢和嵌套結果。嵌套查詢是指通過執行另外一條SQL映射語句來返回預期的複雜類型;嵌套結果是使用嵌套結果映射來處理重複的聯合結果的子集。開發人員可以使用上述任意一種方式實現對關聯關係的加載。

mybaits與Spring的整合

1、 請簡述MyBatis與Spring整合所需JAR包的種類。

MyBatis與Spring整合所需JAR包主要包括:Spring框架所需的JAR包、 MyBatis框架所需的JAR包、MyBatis與Spring整合的中間JAR、數據庫驅動JAR包,以及數據源所需的JAR包。

2、 請簡述MapperFactoryBean和MapperScannerConfigurer的作用。

MapperFactoryBean是MyBatis-Spring團隊提供的一個用於根據Mapper接口生成Mapper對象的類,通過MapperFactoryBean可以配置接口文件以及注入SqlSessionfactory,從而完成一個Bean的實例化。MapperScannerConfigurer是MyBatis-Spring團隊提供的一種用於以自動掃描形式來配置MyBatis中映射器的類,可以通過配置包路徑來自動掃描包接口生成映射器,這使得開發人員可以在編寫很少代碼的情況下,完成對映射器的配置,從而提高開發效率。

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