MyBatis的重點和面試常問的問題

2021-09-21 17:46:54 字數 2273 閱讀 6801

mybatis

${}和#{}的區別

使用#{}時,mybatis會生成preparedstatment,並將#{}內容賦給對應的?,實際上是通過set***()來賦值。

使用時 ,會

將{}時,會將

時,會將

{}中的內容注入到sql語句中,例如在使用order by ${} 中可以指定乙個排序的列名。

xml對映檔案中,處理增刪改查的標籤之外,還有哪些標籤

《resultmap》,《parametermap》,《sql》,《include》,《selectkey》

加上9個動態sql的標籤《trim》,《if》,《choose》,《when》,《otherwise》,《set》,《where》,《foreach》,《bind》

最佳實踐中,通常乙個xml對映檔案,都會寫乙個dao介面與之對應,請問,這個dao介面的工作原理是什麼?dao介面裡的方法,引數不同時,方法能過載嗎?簡述mybatis的外掛程式執行原理,以及如何編寫乙個外掛程式。

mybatis簡可以寫parameterhandler,resultsethandler,statementhandler,executor這四個介面的外掛程式。mybatis使用jdk的動態**,為需要攔截的介面生成**物件來實現介面方法的攔截功能,一旦執行這四個介面時就會進入攔截方法,也就是invocationhandler中的invoke方法,只攔截你指定的方法。

如何編寫外掛程式:

實現mybatis的interceptor介面病重寫intercept()方法,指定要攔截的哪個方法即可。

mybatis動態sql是做什麼的?都有哪些動態sql?能簡述一下動態sql的執行原理不?

主要的作用就是使我們在xml中以標籤的形式編寫動態的sql,完成邏輯判斷和sql的拼接的過程

mybatis提供9中動態的sql標籤。

《trim》,《if》,《choose》,《when》,《otherwise》,《set》,《where》,《foreach》,《bind》

執行原理:

使用ognl從sql引數物件中計算表示式的值,根據表示式的值動態的拼接sql,從而完成動態sql的功能。

mybatis是如何將sql執行結果封裝為目標物件並返回的?都有哪些對映形式?

第一種是使用《resultmap》標籤,然後將列名和屬性名進行對映

第二種是使用sql列的別名功能

有了列名與屬性名的對映關係後,mybatis通過反射建立物件,同時使用反射給物件的屬性逐一賦值並返回,那些找不到對映關係的屬性,是無法完成賦值的。

mybatis的xml對映檔案中,不同的xml對映檔案,id是否可以重複?

不同的xml對映檔案中,如果配置了namespace,那麼id是可以重複的,如果沒有配置namespace的話id是不可以重複。

因為在xml中的key是通過namespace+id來決定的,如果沒有重寫namespace時,id重複的話就會導致key不是唯一的了,所以id能不能重複最關鍵是否配置namespace.

mybatis都有哪些executor執行器?它們之間的區別是什麼?

mybatis有三種基本的executor執行器,******executor,reuseexecutor,batchexecutor

******executor:每執行一次update或select,就開啟乙個statement物件,用完立刻關閉statement.

reuseexecutor:執行update和select,以sql作為key查詢statement物件,存在就使用,不存在就建立,用完後,不關閉statement物件,而是放置在map,這樣就可以重複使用了。

batchexecutor:執行update(沒有select,jdbc批處理不支援select),將所有的sql都新增到批處理中(addbatch),等待統一執行。

簡述mybatis的xml對映檔案和mybatis內部資料結構之間的對映關係?為什麼說mybatis是半自動orm對映工具?它與全自動的區別在**?

hibernate屬於全自動orm對映工具,使用hibernate查詢關聯物件或者關聯集合物件時,可以根據物件關係迷行直接獲取,所以是全自動的,而mybatis在查詢關聯物件或關聯集合物件時,需要手動編寫的sql來完成,所以,稱之為半自動化的orm對映。

面試常問的狀態碼

沒有耐心的同學可以先看總結 狀態 有三位數字組成,第乙個數字定義了響應的類別,有五種可能 1xx 臨時響應 表示臨時響應並需要請求者繼續執行操作的狀態 2xx 成功 表示成功處理了請求的狀態 3xx 重定向 表示要完成請求,需要進一步操作。通常,這些狀態 用來重定向。4xx 請求錯誤 這些狀態 表示...

SpringBoot面試常問的註解

target elementtype.type retention retentionpolicy.runtime documented inherited springbootconfiguration enableautoconfiguration componentscan excludefi...

面試常問 堆排序

思路 分析 改進 思路 堆排序有兩種,一種利用堆的特性,先構建最大堆,每次得到最大堆的堆頂元素 另一種是直接原地使用堆排序。原地堆排序 將陣列構建成堆,交換陣列的第乙個元素和最後乙個元素。依次對除去最後的元素的剩下陣列進行排序。原地排序 public class main heapsort arr,...