# 面試系列 - MyBatis

本文準(zhǔn)備了一系列MyBatis相關(guān)面試題及其答案。

什么是 MyBatis ?

    • MyBatis 是一款優(yōu)秀的持久層框架惊豺,它支持定制化 SQL其屏、存儲(chǔ)過(guò)程以及高級(jí)映射证鸥。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集功戚。MyBatis 可以使用簡(jiǎn)單的 XML 或注解來(lái)配置和映射原生類(lèi)型娶眷、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對(duì)象)為數(shù)據(jù)庫(kù)中的記錄啸臀。
  • 關(guān)鍵詞
    • 持久層框架
    • 避免大量 JDBC 代碼届宠、手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集
    • 使用 XML 或注解把原生類(lèi)型、接口乘粒、Java 對(duì)象映射為數(shù)據(jù)庫(kù)中的記錄

MyBatis 的優(yōu)缺點(diǎn) ?

優(yōu)點(diǎn)

      1. JDBC 相比豌注,減少了50%以上的代碼量。
      1. MyBatis 是最簡(jiǎn)單的持久化框架灯萍,小巧并且簡(jiǎn)單易學(xué)轧铁。
      1. MyBatis 相當(dāng)靈活,不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)強(qiáng)加任何影響旦棉,SQL 寫(xiě)在 XML 里齿风,從程序代碼中徹底分離,降低耦合度他爸,便于統(tǒng)一管理和優(yōu)化聂宾,并可重用。
      1. 提供 XML 標(biāo)簽诊笤,支持編寫(xiě)動(dòng)態(tài) SQL 語(yǔ)句系谐。
      1. 提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的 ORM 字段關(guān)系映射讨跟。
  • 關(guān)鍵詞
    • 減少 JDBC 代碼
    • 簡(jiǎn)單易學(xué)
    • SQL 與程序代碼解耦
    • 支持動(dòng)態(tài) SQL
    • 提供映射標(biāo)簽

缺點(diǎn)

      1. SQL 語(yǔ)句的編寫(xiě)工作量較大纪他,尤其是字段多、關(guān)聯(lián)表多時(shí)晾匠,更是如此茶袒,對(duì)開(kāi)發(fā)人員編寫(xiě) SQL 語(yǔ)句的功底有一定要求。
      1. SQL 語(yǔ)句依賴(lài)于數(shù)據(jù)庫(kù)凉馆,導(dǎo)致數(shù)據(jù)庫(kù)移植性差薪寓,不能隨意更換數(shù)據(jù)庫(kù)。
  • 關(guān)鍵詞
    • 需要編寫(xiě)大量 SQL
    • 可移植性差

MyBatis 適用場(chǎng)景 ?

    • MyBatis 專(zhuān)注于 SQL 本身澜共,是一個(gè)足夠靈活的 DAO 層解決方案向叉。
    • 對(duì)性能的要求很高,或者需求變化較多的項(xiàng)目嗦董,如互聯(lián)網(wǎng)項(xiàng)目母谎,MyBatis 將是不錯(cuò)的選擇。
  • 關(guān)鍵詞
    • 要求性能
    • 需求變化多
    • 互聯(lián)網(wǎng)

MyBatis 與 Hibernate 有哪些不同 ?

  • 關(guān)鍵詞
    • 自動(dòng)化程度京革, MyBatis 是半自動(dòng)化奇唤,而 Hibernate 是全自動(dòng)化
    • 可移植性幸斥, Hibernate 可移植性遠(yuǎn)遠(yuǎn)大于 MyBatis (因?yàn)?MyBatis 需要自己編寫(xiě) SQL
    • 靈活性, MyBatis 靈活性比 Hibernate 高(因?yàn)?MyBatis SQL 是自己編寫(xiě)的 )
    • 簡(jiǎn)單易用性咬扇,MyBatis 占優(yōu)
    • 代碼量甲葬,Hibernate 占優(yōu)
    • 緩存方面,

#{} 與 ${} 的區(qū)別是什么 ?

    • #{} 是預(yù)編譯處理冗栗,${} 是字符串替換
    • MyBatis 在處理 #{} 時(shí)演顾,會(huì)將 #{} 替換為 ? 供搀,調(diào)用 PreparedStatementset 方法來(lái)賦值
    • MyBatis 在處理 ${} 時(shí)隅居,會(huì)將 ${} 替換為變量的值
    • SQL 注入是發(fā)生在編譯的過(guò)程中,#{} 可以有效的防止SQL注入
  • 關(guān)鍵詞
    • 預(yù)編譯
    • SQL 注入

模糊查詢(xún) like 語(yǔ)句怎么寫(xiě) 葛虐?

  • 三種方法如下:
    • like '%${}%'
    • like "%"#{}"%"
    • like CONCAT('%', #{}, '%')
  • 總結(jié):推薦第三種胎源,第一種不能防止 SQL 注入,第二種不美觀(哈哈)

本文完屿脐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涕蚤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子的诵,更是在濱河造成了極大的恐慌万栅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件西疤,死亡現(xiàn)場(chǎng)離奇詭異烦粒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)代赁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)扰她,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人芭碍,你說(shuō)我怎么就攤上這事徒役。” “怎么了窖壕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵忧勿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我瞻讽,道長(zhǎng)鸳吸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任卸夕,我火速辦了婚禮层释,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘快集。我一直安慰自己贡羔,他們只是感情好廉白,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著乖寒,像睡著了一般猴蹂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上楣嘁,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天磅轻,我揣著相機(jī)與錄音,去河邊找鬼逐虚。 笑死聋溜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叭爱。 我是一名探鬼主播撮躁,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼买雾!你這毒婦竟也來(lái)了把曼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漓穿,失蹤者是張志新(化名)和其女友劉穎嗤军,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體晃危,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叙赚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了山害。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纠俭。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浪慌,靈堂內(nèi)的尸體忽然破棺而出冤荆,到底是詐尸還是另有隱情,我是刑警寧澤权纤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布钓简,位于F島的核電站,受9級(jí)特大地震影響汹想,放射性物質(zhì)發(fā)生泄漏外邓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一古掏、第九天 我趴在偏房一處隱蔽的房頂上張望损话。 院中可真熱鬧,春花似錦、人聲如沸丧枪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拧烦。三九已至忘闻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恋博,已是汗流浹背齐佳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留债沮,地道東北人炼吴。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像秦士,于是被迫代替她去往敵國(guó)和親缺厉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子永高,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 隧土? MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的...
    笨鳥(niǎo)慢飛閱讀 5,520評(píng)論 0 4
  • 前言 MyBatis是一個(gè)優(yōu)秀的持久層ORM框架皆愉,它對(duì)jdbc的操作數(shù)據(jù)庫(kù)的過(guò)程進(jìn)行封裝,使開(kāi)發(fā)者只需要關(guān)注SQL...
    AI喬治閱讀 641評(píng)論 0 5
  • 一异剥、概述 面試,難還是不難絮重?取決于面試者的底蘊(yùn)(氣場(chǎng)+技能)冤寿、心態(tài)和認(rèn)知及溝通技巧。面試其實(shí)可以理解為一場(chǎng)聊天和談...
    編輯小猿閱讀 1,912評(píng)論 1 3
  • 不知為何青伤,最近一直振作不起精神來(lái)督怜。想寫(xiě)點(diǎn)東西,總無(wú)從下筆狠角。被一種很強(qiáng)的失落感和焦慮占據(jù)著心頭号杠。失落于沒(méi)找到讓自己甘...
    印第安南閱讀 545評(píng)論 1 2
  • 在吃肉是過(guò)大年的年代,為了改善生活丰歌,把平常過(guò)成快樂(lè)和幸福姨蟋,村民們充分挖掘能利用的自然資源辣吃,開(kāi)發(fā)了許多新產(chǎn)品,其中之...
    瑞葉飛飛閱讀 15,965評(píng)論 1 2