大战熟女丰满人妻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官網。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费国产成人午夜私人影视 | 久久精品国产99久久香蕉 | 综合视频网 | 中文字幕专区高清在线观看 | 亚洲乱码一区二区三区国产精品 | 国产亚洲日本 | 特黄aaaaaaaaa及毛片 | 毛片啪啪视频 | 久久精品国产夜色 | 色偷偷尼玛图亚洲综合 | 天天干天天操天天玩 | 国产成人h综合亚洲欧美在线 | 欧美毛片日韩一级在线 | 国产人成午夜免视频网站 | 玖玖国产精品视频 | 蜜桃久久| 一级成人a毛片免费播放 | 在线不卡福利 | 精品福利在线视频 | 黄色伊人网 | 亚洲大胆精品337p色 | 婷婷色国产 | 色视频久久 | 91免费国产高清观看 | 91香蕉国产视频 | 变态 调教 视频 国产九色 | 久久成人18免费网站 | 成人午夜性视频欧美成人 | 久99久热只有精品国产99 | 亚洲国产精品悠悠久久琪琪 | 床上毛片| 欧美日本高清视频在线观看 | 99热久久免费精品首页 | 在线精品视频成人网 | 成年女人在线视频 | 一级久久| 奇米视频在线观看 | 国产香蕉偷在线观看视频 | 永久免费观看黄网站 | 久久国产小视频 | 午夜欧美性视频在线播放 |