黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

總結比較全面的mybatis常見面試題

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

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

mybatis常見面試題

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

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

即#是將傳入的值當做字符串的形式,先替換為?號,然后調用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內部封裝了jdbc,開發(fā)者只需要關注sql語句本身,而不需要花費精力去處理加載驅動、創(chuàng)建連接、創(chuàng)建statement等繁雜的過程。

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

(3)MyBatis 支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數(shù)以及獲取結果集。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ù)庫時需要構造sqlSession對象,在對象中有一個數(shù)據(jù)結構用于存儲緩存數(shù)據(jù)。不同的sqlSession之間的緩存數(shù)據(jù)區(qū)域是互相不影響的。也就是他只能作用在同一個sqlSession中,不同的sqlSession中的緩存是互相不能讀取的。

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

MyBatis的二級緩存是mapper級別的緩存,它可以提高對數(shù)據(jù)庫查詢的效率,以提高應用的性能。多個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 接口調用時有哪些要求?

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.調用 session.commit()提交事務

E.調用 session.close()關閉會話

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

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

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

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

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日日干综合 | 91亚洲国产成人久久精品网站 | 日韩视频高清免费看 | 色五月激情五月 | 18勿进色禁网站永久免费 | 啊啊啊毛片 | 欧美亚洲性色影视在线 | xxxx日本xx| 日韩黄色网 | 欧美精品亚洲精品 | 久久精品免费观看 | 九九色视频在线观看 | 国产黄色在线免费观看 | 国产在线播放成人免费 | 美女黄色免费看 | 污污视频在线播放 | 欧美午夜剧场 | 黑人与中国女一级毛片不卡 | 日韩婷婷| 日本在线亚洲 | 欧美日本一| 精品国产免费福利片 | 一男四女乱肉荒岛小说 | 亚洲欧洲日产v特级毛片 | 天天爽天天射 | 日韩在线视频播放 | 欧美性导航 | 99热在线免费观看 | 在线观看亚洲免费视频 | 黄色一级视频欧美 | 成人午夜私人影院入口 | 97色噜噜刺激有声小说 | 1769老司机人人精品视频 | 精品欧美一区二区在线观看 | 亚洲美女又黄又爽在线观看 | 日韩欧美91 | 综合欧美日韩一区二区三区 | 日韩欧美一区二区久久黑人 | 亚洲黄色激情视频 | 狠狠操天天干 | 日本一区二区三区不卡在线视频 |