大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 職業(yè)指南 總結(jié)比較全面的mybatis常見面試題

總結(jié)比較全面的mybatis常見面試題

更新時間:2022-12-19 16:06:12 來源:動力節(jié)點 瀏覽1544次

MyBatis是一個半ORM(對象關(guān)系映射)框架,它內(nèi)部封裝了JDBC,開發(fā)時只需要關(guān)注SQL語句本身,不需要花費精力去加載驅(qū)動、創(chuàng)建連接、創(chuàng)建Statement等繁雜過程。程序員直接編寫原生態(tài)sql,可以嚴格控制sql執(zhí)行性能,靈活度高。所以MyBatis是我們在面試時需要準備的:

mybatis常見面試題

1、#{}和${}的區(qū)別是什么?

${}是字符串替換,相當于直接顯示數(shù)據(jù),#{}是預(yù)編譯處理,相當于對數(shù)據(jù)加上雙引號

即#是將傳入的值當做字符串的形式,先替換為?號,然后調(diào)用PreparedStatement的set方法來賦值,而$是將傳入的數(shù)據(jù)直接顯示生成sql語句

--Mybatis在處理#{}時
select id,name,age from student where id =#{id}
當前端把id值1傳入到后臺的時候,就相當于:
select id,name,age from student where id ='1'
 
--Mybatis在處理${}時
select id,name,age from student where id =${id}
當前端把id值1傳入到后臺的時候,就相當于:
select id,name,age from student where id = 1

PS:使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性(語句的拼接),如果使用在order by 中就需要使用 ${}。

最大區(qū)別在于:#{} 傳入值時,sql解析參數(shù)是帶引號的,而${}傳入值時,sql解析參數(shù)是不帶引號的。

2、如何理解Mybatis?(Mybatis是什么)

Mybatis內(nèi)部封裝了jdbc,開發(fā)者只需要關(guān)注sql語句本身,而不需要花費精力去處理加載驅(qū)動、創(chuàng)建連接、創(chuàng)建statement等繁雜的過程。

mybatis通過xml或注解的方式將要執(zhí)行的各種statement配置起來,并通過java對象和statement中sql的動態(tài)參數(shù)進行映射生成最終執(zhí)行的sql語句,最后由mybatis框架執(zhí)行sql并將結(jié)果映射為java對象并返回。

(3)MyBatis 支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJO映射成數(shù)據(jù)庫中的記錄。

3、Mybatis 中一級緩存與二級緩存的區(qū)別?

緩存:合理使用緩存是優(yōu)化中最常見的方法之一,將從數(shù)據(jù)庫中查詢出來的數(shù)據(jù)放入緩存中,下次使用時不必從數(shù)據(jù)庫查詢,而是直接從緩存中讀取,避免頻繁操作數(shù)據(jù)庫,減輕數(shù)據(jù)庫的壓力,同時提高系統(tǒng)性能。

一級緩存是SqlSession級別的緩存:

Mybatis對緩存提供支持,但是在沒有配置的默認情況下,它只開啟一級緩存。一級緩存在操作數(shù)據(jù)庫時需要構(gòu)造sqlSession對象,在對象中有一個數(shù)據(jù)結(jié)構(gòu)用于存儲緩存數(shù)據(jù)。不同的sqlSession之間的緩存數(shù)據(jù)區(qū)域是互相不影響的。也就是他只能作用在同一個sqlSession中,不同的sqlSession中的緩存是互相不能讀取的。

二級緩存是mapper級別的緩存:

MyBatis的二級緩存是mapper級別的緩存,它可以提高對數(shù)據(jù)庫查詢的效率,以提高應(yīng)用的性能。多個SqlSession去操作同一個Mapper的sql語句,多個SqlSession可以共用二級緩存,二級緩存是跨SqlSession的。

開啟二級緩存:

A.mybatis.xml配置文件中加入:

<span style="font-size:18px;"><settings>    
   <!--開啟二級緩存-->    
    <setting name="cacheEnabled" value="true"/>    
</settings> </span>  

B.在需要開啟二級緩存的mapper.xml中加入caceh標簽

<span style="font-size:18px;"><cache/></span>  

C.讓使用二級緩存的POJO類實現(xiàn)Serializable接口

<span style="font-size:18px;">public class User implements Serializable {}</span>  

4、使用 MyBatis 的 mapper 接口調(diào)用時有哪些要求?

A. Mapper 接口方法名和 mapper.xml 中定義的每個 sql 的 id 相同

B. Mapper 接口方法的輸入?yún)?shù)類型和 mapper.xml 中定義的每個 sql 的 parameterType 的類型相同

C. Mapper 接口方法的輸出參數(shù)類型和 mapper.xml 中定義的每個 sql 的 resultType 的類型相同

D. Mapper.xml 文件中的 namespace 即是 mapper 接口的類路徑

(平常用會用,但是面試時,會想不起來,這個常考)

5、簡述一下Mybatis 的編程步驟

A.創(chuàng)建 SqlSessionFactory

B.通過 SqlSessionFactory 創(chuàng)建 SqlSession

C.通過 sqlsession 執(zhí)行數(shù)據(jù)庫操作

D.調(diào)用 session.commit()提交事務(wù)

E.調(diào)用 session.close()關(guān)閉會話

6、MyBatis中接口綁定有幾種實現(xiàn)方式,是怎么實現(xiàn)的?

A.通過注解綁定,在接口的方法上面加上 @Select@Update等注解里面包含Sql語句來綁定(Sql語句比較簡單的時候,推薦注解綁定)

B.通過xml里面寫SQL來綁定, 指定xml映射文件里面的namespace必須為接口的全路徑名(SQL語句比較復(fù)雜的時候,推薦xml綁定)

以上就是“總結(jié)比較全面的mybatis常見面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日日夜夜免费精品 | 日本一级毛片在线观看 | 久久伊人草 | 有色视频在线观看免费高清 | 国产精品网址你懂的 | 久草男人天堂 | 精品久久久久久中文字幕网 | 男人你懂的网站 | 麻豆精品久久久一区二区 | 在线播放国产视频 | 超97在线观看精品国产 | 四虎在线永久视频观看 | 全黄一级裸片视频在线观看 | 久久精品麻豆 | 亚洲欧洲精品视频在线观看 | 欧美一级欧美一级毛片 | 成人a免费α片在线视频网站 | 成人免费视频网 | 免费高清在线影片一区 | 国产精品亚洲欧美日韩一区在线 | 一区二区国产在线播放 | 国产高清专区 | 中文字幕第13亚洲另类 | 国产精品96久久久久久久 | 中文一级毛片 | 欧美国产精品一区二区免费 | 操操干 | 四虎精品成人a在线观看 | 狠狠丁香激情久久综合 | 国产成人啪精品 | 波多野结衣日韩 | 国产大片中文字幕在线观看 | 久久久久亚洲精品影视 | 99这里都是精品 | 夜色福利一区二区三区 | 欧美高清亚洲欧美一区h | 在线免费小视频 | 5060网一级毛片免费观看 | 成年人黄色在线观看 | 在线观看亚洲 | 99在线国产视频 |