更新時(shí)間:2022-12-15 16:27:50 來源:動力節(jié)點(diǎn) 瀏覽1137次
mybatis企業(yè)必問面試題可以說是很多面試官喜歡提到的問題,所以我們在此之前一定最好準(zhǔn)備,這樣才能更加有效的回答,好了,廢話不多說,直接上干貨:
mybatis動態(tài)sql是做什么的?
其實(shí)mybatis的動態(tài)sql,無非就是可以讓我在xml映射文件內(nèi)以標(biāo)簽的形式編寫動態(tài)sql的,這樣可以完成我們邏輯判斷和動態(tài)拼接sql。mybatis為我們提供動態(tài)的sql標(biāo)簽,其中mybatis的標(biāo)簽分別定義sql語句(select、insert、delete、upadate)、控制動態(tài)sql拼接(if、foreach、choose)、格式化輸出(where、set、trim)、配置關(guān)聯(lián)關(guān)系(collection、association)、配置Java對象屬性與查詢結(jié)果集中列表對應(yīng)關(guān)系(resultMap)以及定義常用和引用(sql和include)。
問到mybatis動態(tài)語句,一定會問到動態(tài)sql的執(zhí)行原理是什么?
sql動態(tài)的執(zhí)行原理非常簡單,它是使用ognl從sql參數(shù)對象中計(jì)算表達(dá)式的值,然后再根據(jù)表達(dá)式的值動態(tài)進(jìn)行拼接sql的,這樣就可以完美地完成動態(tài)sql的功能了。
你說一下一級緩存和二級緩存是什么吧?
首先,一級緩存它是指session緩存的,要知道的是一級緩存作用域默認(rèn)是為sqlsession,同時(shí)默認(rèn)也是幫你開啟一級緩存。當(dāng)同一個sqlsession中的時(shí)候,執(zhí)行相同查詢語句,在第一次的時(shí)候回去數(shù)據(jù)庫進(jìn)程查詢,然后再寫到緩存中去,再第二次以后都是直接去緩存中取了。
知道一級緩存了,二級緩存其實(shí)和一級緩存其機(jī)制相同,它的默認(rèn)也是采用 PerpetualCache,HashMap 存儲的,而不同的是在于其存儲作用域?yàn)?Mapper(Namespace)中,并且可以自定義存儲源。還有二級緩存默認(rèn)關(guān)著的,假如你要取消的話,你可以通過mybatis配置文件來指定cacheEnabled為false即可,代碼如下:。
再說一說mybatis二級緩存應(yīng)用場景
二級緩存應(yīng)用主要對于哪些訪問多的查詢請求,以及用戶對查詢結(jié)果實(shí)時(shí)性要求不高,這時(shí)候可采用mybatis二級緩存技術(shù)降低數(shù)據(jù)庫訪問量,從而提高訪問速度。
以上就是“mybatis企業(yè)必問面試題,這幾道需要格外注意”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743