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

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

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

更新時間:2022-12-19 16:06:12 來源:動力節點 瀏覽1439次

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

mybatis常見面試題

1、#{}和${}的區別是什么?

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

即#是將傳入的值當做字符串的形式,先替換為?號,然后調用PreparedStatement的set方法來賦值,而$是將傳入的數據直接顯示生成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注入,提高系統安全性(語句的拼接),如果使用在order by 中就需要使用 ${}。

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

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

Mybatis內部封裝了jdbc,開發者只需要關注sql語句本身,而不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。

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

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

3、Mybatis 中一級緩存與二級緩存的區別?

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

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

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

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

MyBatis的二級緩存是mapper級別的緩存,它可以提高對數據庫查詢的效率,以提高應用的性能。多個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類實現Serializable接口

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

4、使用 MyBatis 的 mapper 接口調用時有哪些要求?

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

B. Mapper 接口方法的輸入參數類型和 mapper.xml 中定義的每個 sql 的 parameterType 的類型相同

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

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

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

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

A.創建 SqlSessionFactory

B.通過 SqlSessionFactory 創建 SqlSession

C.通過 sqlsession 執行數據庫操作

D.調用 session.commit()提交事務

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

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

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

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产在热线精品视频国产一二 | 天天摸天天舔天天操 | 宅男看片午夜大片啪啪mv | 亚洲国产综合久久精品 | 青青青草视频在线 | 精品视频午夜一区二区 | 欧美日日射 | 国产精品福利在线 | 久久国产精品范冰啊 | 国产成人丝袜网站在线观看 | 国产精品福利视频免费观看 | 久草在线观看免费 | 51国产午夜精品免费视频 | 久久九九有精品国产23百花影院 | 日本吻胸抓胸激烈视频网站 | 中文字幕不卡在线观看 | 韩日中文字幕 | 亚洲欧美专区精品久久 | 西西做人爱免费视频 | 女人a级毛片 | 在线成人播放毛片 | 国产精品福利一区二区久久 | 国内精品51视频在线观看 | 一区在线播放 | 五月天婷婷激情视频 | 亚洲欧美精品天堂久久综合一区 | 亚洲精品久久久久综合91 | 久久在线精品 | 久久9热| 亚洲精品123区在线观看 | 国产一区欧美 | 51啪影院 | 亚洲网站免费 | 2018天天干天天操 | 欧美黑大粗硬毛片视频 | 亚洲精品www久久久久久久软件 | 欧美ucjizz免费播放器 | 久久国产高清字幕中文 | 天天拍拍天天爽免费视频 | 一级片久久 | 亚洲久久在线观看 |