mybatis常見面試題

2021-10-09 00:25:25 字數 1388 閱讀 9529

1.mybatis動態sql是做什麼的?都有哪些動態sql,簡單描述一下動態sql的執行原理

mybatis動態sql是 指在對映檔案xml中可以通過標籤的形式編寫動態sql,完成邏輯判斷和動態拼接sql的功能。

有9種動態sql標籤:trim/where/set/foeach/if/choose/when/otherwise/bind。

執行原理為使用ognl從sql引數物件種計算表示式的值,根據表示式的值動態拼接sql,以此來完成動態sql的功能。

2.mybatis是否支援延遲載入?如果支援,它的實現原理是什麼?

mybatis僅支援association關聯物件和collection關聯集合物件的延遲載入

association指的就是一對一,collection指的就是一對多查詢。

在mybatis中可以配置是否啟用延遲載入lazyloadingenabled=true|false

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

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

reuseexecutor:執行update或者select以sql作為key查詢statement物件,存在就是用,不存在就建立乙個新的。

使用完畢以後不關閉statement物件而是將他存放到map中供下一次使用,簡言之就是重複使用statement。

batchexecutor:執行update將所有sql都新增到批處理中(addbatch()),等待統一執行executebatch(),它快取了多個statement物件,

每個statement物件都是addbatch()完畢後,等待逐一執行executebatch()批處理的。

4.簡單描述一下mybatis的一級,二級快取(分別從儲存結構,範圍,失效場景。三個方面進行作答)?

mybatis的快取分為一級快取和二級快取:

一級快取:存放在session裡面,預設開啟,只在單個sqlsession中有效。

二級快取:存放在namespace裡面,預設開啟,在整個namespace中有效。

5.簡單描述一下mybatis的外掛程式執行原理,以及如何編寫乙個外掛程式?

mybatis外掛程式的本質是***interceptor,mybatis使用的是jdk的動態**,為需要攔截的介面生成**物件以實現介面方法攔截功能。

每當執行外掛程式時就會進入攔截方法,具體就是invocationhandler的invoke()方法。

實現mybatis的interceptor介面並重寫intercept()方法,然後給外掛程式編寫註解。

MyBatis常見面試題

1.和 的區別。是預編譯處理,是字串替換。mybatis在處理 時,會將sql中的 替換為?號,呼叫preparedstatement的set方法來賦值。mybatis在處理 時,就是把 替換成變數的值。使用 可以有效的防止sql注入,提高系統安全性。可以使用 時盡量使用 2.mybatis與hib...

Mybatis 的常見面試題

背景 好久沒用mybatis了,有些面試題還是要好好準備的。問題集mybatis 的常見面試題 mybatis常見面試題總結 ps 總結的還是很全面的 mybatis常見面試題1 精講 和 的區別是什麼?使用 可以有效的防止sql注入,提高系統安全性。原因在於 預編譯機制。預編譯完成之後,sql的結...

常見面試題

1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...