MyBatis面試題總結(jié) 01

  • IBatis和MyBatis在細(xì)節(jié)上有哪些不同量愧?

    • 在sql里面變量命名有原來的#變量# 變成了#{變量} 原來的變量變成了${變量}乳绕;
    • 原來在sql節(jié)點(diǎn)里面的class都換名字交type辫樱;
    • 原來的queryForObject、queryForList 變成了selectOne厨诸、selectList飒赃;
    • 原來的別名設(shè)置在映射文件里面放在了核心配置文件;
  • IBatis和MyBatis在核心處理類分別叫什么聪全?

    • IBatis里面的核心處理類交SqlMapClient, MyBatis里面的核心處理類叫做SqlSession
  • Mybatis比IBatis比較大的幾個改進(jìn)是什么泊藕?

    • 有接口綁定,包括注解綁定sql和xml綁定Sql ,
    • 動態(tài)sql由原來的節(jié)點(diǎn)配置變成OGNL表達(dá)式 OGNL(Object Graphic Navigation Language,對象圖導(dǎo)航語言)
    • 在一對一,一對多的時候引進(jìn)了association,在一對多的時候引入了collection 節(jié)點(diǎn),不過都是在resultMap里面配置难礼。
  • 使用MyBatis的mapper接口調(diào)用時有哪些要求娃圆?

    • Mapper.xml文件中的namespace即是mapper接口的類路徑
    • Mapper接口方法名和mapper.xml中定義的每個sql的id相同
    • Mapper接口方法的輸入?yún)?shù)類型和mapper.xml中定義的每個sql 的parameterType的類型相同
    • Mapper接口方法的輸出參數(shù)類型和mapper.xml中定義的每個sql的resultType的類型相同
  • 什么情況下用注解綁定,什么情況下用xml綁定 ?

    • 當(dāng)Sql語句比較簡單時候,用注解綁定, 當(dāng)SQL語句比較復(fù)雜時候,用xml綁定,一般用xml綁定的比較多蛾茉。
  • 什么是MyBatis的接口綁定,有什么好處讼呢?

    • 接口映射就是在MyBatis中任意定義接口,然后把接口里面的方法和SQL語句綁定, 我們直接調(diào)用接口方法就可以,這樣比起原來了SqlSession提供的方法我們可以有更加靈活的選擇和設(shè)置.
  • MyBatis中一級緩存失效的四種情況分別是什么?

    • 不同的SqlSession對應(yīng)不同的一級緩存
    • 同一個SqlSession但是查詢條件不同
    • 同一個SqlSession兩次查詢期間執(zhí)行了任何一次增 刪改操作
    • 同一個SqlSession兩次查詢期間手動清空了緩存
  • Mybatis動態(tài)sql是做什么的谦炬?都有哪些動態(tài)sql悦屏?能簡述一下動態(tài)sql的執(zhí)行原理不?

    • Mybatis動態(tài)sql可以讓我們在Xml映射文件內(nèi)键思,以標(biāo)簽的形式編寫動態(tài)sql础爬,完成邏輯判斷和動態(tài)拼接sql的功能。
    • Mybatis提供了9種動態(tài)sql標(biāo)簽:trim|where|set|foreach|if|choose|when|otherwise|bind吼鳞。
    • 其執(zhí)行原理為看蚜,使用OGNL從sql參數(shù)對象中計算表達(dá)式的值,根據(jù)表達(dá)式的值動態(tài)拼接sql赔桌,以此來完成動態(tài)sql的功能供炎。
  • Mybatis的Xml映射文件中,不同的Xml映射文件纬乍,id是否可以重復(fù)碱茁?

    • 不同的Xml映射文件,如果配置了namespace仿贬,那么id可以重復(fù)纽竣;如果沒有配置namespace,那么id不能重復(fù);畢竟namespace不是必須的蜓氨,只是最佳實(shí)踐而已聋袋。
    • 原因就是namespace+id是作為Map<String, MappedStatement>的key使用的,如果沒有namespace穴吹,就剩下id幽勒,那么,id重復(fù)會導(dǎo)致數(shù)據(jù)互相覆蓋港令。有了namespace啥容,自然id就可以重復(fù),namespace不同顷霹,namespace+id自然也就不同咪惠。
  • 為什么說Mybatis是半自動ORM映射工具?它與全自動的區(qū)別在哪里淋淀?

    • Hibernate屬于全自動ORM映射工具遥昧,使用Hibernate查詢關(guān)聯(lián)對象或者關(guān)聯(lián)集合對象時,可以根據(jù)對象關(guān)系模型直接獲取朵纷,所以它是全自動的炭臭。而Mybatis在查詢關(guān)聯(lián)對象或關(guān)聯(lián)集合對象時,需要手動編寫sql來完成袍辞,所以鞋仍,稱之為半自動ORM映射工具。
  • MyBatis實(shí)現(xiàn)一對一有幾種方式?具體怎么操作的搅吁?

    • 有聯(lián)合查詢和嵌套查詢,聯(lián)合查詢是幾個表聯(lián)合查詢,只查詢一次, 通過在resultMap里面配置association節(jié)點(diǎn)配置一對一的類就可以完成; 嵌套查詢是先查一個表,根據(jù)這個表里面 的結(jié)果的外鍵id,去再另外一個表里面查詢數(shù)據(jù),也是通過association配置,但另外一個表的查詢通過select屬性配置凿试。
  • MyBatis實(shí)現(xiàn)一對多有幾種方式,怎么操作的?

    • 有聯(lián)合查詢和嵌套查詢,聯(lián)合查詢是幾個表聯(lián)合查詢,只查詢一次,通過在resultMap里面配 置collection節(jié)點(diǎn)配置一對多的類就可以完成; 嵌套查詢是先查一個表,根據(jù)這個表里面的 結(jié)果的外鍵id,去再另外一個表里面查詢數(shù)據(jù),也是通過配置collection,但另外一個表的查詢通過select節(jié)點(diǎn)配置似芝。
  • 簡述Mybatis的Xml映射文件和Mybatis內(nèi)部數(shù)據(jù)結(jié)構(gòu)之間的映射關(guān)系?

    • Mybatis將所有Xml配置信息都封裝到All-In-One重量級對象Configuration內(nèi)部板甘。在Xml映射文件中党瓮,<parameterMap>標(biāo)簽會被解析為ParameterMap對象,其每個子元素會被解析為ParameterMapping對象盐类。<resultMap>標(biāo)簽會被解析為ResultMap對象寞奸,其每個子元素會被解析為ResultMapping對象。每一個<select>在跳、<insert>枪萄、<update>、<delete>標(biāo)簽均會被解析為MappedStatement對象猫妙,標(biāo)簽內(nèi)的sql會被解析為BoundSql對象瓷翻。
  • Mybatis都有哪些Executor執(zhí)行器?它們之間的區(qū)別是什么?
    Mybatis有三種基本的Executor執(zhí)行器齐帚,SimpleExecutor妒牙、ReuseExecutor、BatchExecutor对妄。

    • SimpleExecutor:每執(zhí)行一次update或select湘今,就開啟一個Statement對象,用完立刻關(guān)閉Statement對象剪菱。
    • ReuseExecutor:執(zhí)行update或select摩瞎,以sql作為key查找Statement對象,存在就使用孝常,不存在就創(chuàng)建旗们,用完后,不關(guān)閉Statement對象茫因,而是放置于Map<String, Statement>內(nèi)蚪拦,供下一次使用。簡言之冻押,就是重復(fù)使用Statement對象驰贷。
    • BatchExecutor:執(zhí)行update(沒有select,JDBC批處理不支持select)洛巢,將所有sql都添加到批處理中(addBatch())括袒,等待統(tǒng)一執(zhí)行(executeBatch()),它緩存了多個Statement對象稿茉,每個Statement對象都是addBatch()完畢后锹锰,等待逐一執(zhí)行executeBatch()批處理。與JDBC批處理相同漓库。
      作用范圍:Executor的這些特點(diǎn)恃慧,都嚴(yán)格限制在SqlSession生命周期范圍內(nèi)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渺蒿,一起剝皮案震驚了整個濱河市痢士,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茂装,老刑警劉巖怠蹂,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異少态,居然都是意外死亡城侧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門彼妻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫌佑,“玉大人豆茫,你說我怎么就攤上這事∑缜浚” “怎么了澜薄?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摊册。 經(jīng)常有香客問我肤京,道長,這世上最難降的妖魔是什么茅特? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任忘分,我火速辦了婚禮,結(jié)果婚禮上白修,老公的妹妹穿的比我還像新娘妒峦。我一直安慰自己,他們只是感情好兵睛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布肯骇。 她就那樣靜靜地躺著,像睡著了一般祖很。 火紅的嫁衣襯著肌膚如雪笛丙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天假颇,我揣著相機(jī)與錄音胚鸯,去河邊找鬼。 笑死笨鸡,一個胖子當(dāng)著我的面吹牛姜钳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播形耗,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼哥桥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了激涤?” 一聲冷哼從身側(cè)響起泰讽,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昔期,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佛玄,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硼一,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梦抢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片般贼。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哼蛆,到底是詐尸還是另有隱情蕊梧,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布腮介,位于F島的核電站肥矢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叠洗。R本人自食惡果不足惜甘改,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灭抑。 院中可真熱鬧十艾,春花似錦、人聲如沸腾节。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽案腺。三九已至庆冕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間救湖,已是汗流浹背愧杯。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鞋既,地道東北人力九。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像邑闺,于是被迫代替她去往敵國和親跌前。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 陡舅? MyBatis 是支持定制化 SQL抵乓、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,455評論 0 4
  • 1、什么是Mybatis靶衍? (1)Mybatis是一個半ORM(對象關(guān)系映射)框架灾炭,它內(nèi)部封裝了JDBC,開發(fā)時只...
    裘馬輕狂大帥閱讀 411評論 0 8
  • 一铡原、概述 面試偷厦,難還是不難?取決于面試者的底蘊(yùn)(氣場+技能)燕刻、心態(tài)和認(rèn)知及溝通技巧只泼。面試其實(shí)可以理解為一場聊天和談...
    編輯小猿閱讀 1,905評論 1 3
  • 上午在辦公室忙碌的間隙,抬頭看了看窗外的藍(lán)天和白云卵洗。清爽的藍(lán)配上安靜的白请唱,像藍(lán)色的禮服配著小白鞋,青春洋溢忌怎。盡管窗...
    屋檐下023閱讀 506評論 0 0
  • “你胖了”屈居第二籍滴, 生平最恨——你想多了。 你胖了榴啸,關(guān)你什么事兒孽惰。 過完年確定一定肯定地躺槍了,主要這槍不是別人...
    桔栗子閱讀 411評論 0 0